Ngoài việc sử dụng UI cung cấp sẵn của Nexus Repository Manager để upload một artifact lên, chúng ta cũng có thể sử dụng RESTful API, cũng được cung cấp sẵn của Nexus Repository Manager, để làm việc này. Cụ thể như thế nào? Chúng ta hãy cùng nhau tìm hiểu trong bài viết này các bạn nhé!
Đầu tiên, mình sẽ nói về RESTful API được cung cấp bởi Nexus Repository Manager trước.
Nếu các bạn để ý thì sẽ thấy trong trang quản lý của Nexus Repository Manager, phần menu bên trái sẽ có một menu item tên là API. Click vào nó, các bạn sẽ được đưa tới một trang chứa tất cả các RESTful API mà Nexus Repository Manager hỗ trợ, giúp chúng ta có thể thao tác với các artifact thông qua RESTful API trong các câu lệnh command line hoặc sử dụng trong code một cách dễ dàng.
Các bạn có thể dễ dàng xem được thông tin của từng API bằng cách expand chúng ra. Kéo xuống dưới cùng, các bạn sẽ thấy base URL là “service/rest” và request tới Nexus Repository Manager sẽ có dạng là:
1 |
http://<host>:<port>/service/rest/<api_url> |
Bây giờ, mình sẽ thử sử dụng POST API “/beta/components” trong Nexus Repository Manager của mình để upload một artifact lên xem sao các bạn nhé!
Như các bạn thấy, API có một request parameter kiểu String “repository” là bắt buộc để chỉ định repository nào mà chúng ta cần upload artifact lên. Ngoài ra, chúng ta cũng cần chỉ định thông tin về artifact mà chúng ta cần upload. Đối với một artifact thì có tất cả 5 thông tin chúng ta cần phải khai báo, đó là:
- maven2.groupId chỉ định Group Id của artifact. Nếu các bạn upload tập tin .pom thì không cần parameter này.
- maven2.artifactId chỉ định Artifact Id của artifact. Nếu các bạn upload tập tin .pom thì không cần parameter này.
- maven2.version chỉ định Version của artifact. Nếu các bạn upload tập tin .pom thì không cần parameter này.
- maven2.assetN: Nexus Repository Manager cho phép chúng ta có thể cùng một lúc upload nhiều tập tin cho cùng một artifact. Ký tự N trong parameter này có giá trị từ 1 đến N, tăng dần theo số lượng tập tin mà chúng cần cần upload. Ví dụ nếu mình cần upload tập tin .jar và .pom thì tương ứng request parameter sẽ có dạng maven2.asset1 và maven2.asset2. Kiểu dữ liệu của parameter này sẽ là một binary dạng File.
- maven2.assetN.extension: extension của tập tin cần upload.
Ở đây, chúng ta còn có một optional parameter nữa tên là maven2.generate-pom giúp chúng ta có thể yêu cầu Nexus Repository Manager generate cho chúng ta một tập tin .pom mặc định nếu chúng ta không có tập tin pom.xml của thư viện cần upload.
Bây giờ, mình sẽ thử upload tập tin .jar của thư viện wlthint3client sử dụng API này xem sao các bạn nhé!
Mình sẽ sử dụng công cụ curl trên macOS để thực hiện request này. Cú pháp của command này sẽ như sau:
1 2 3 4 5 6 7 |
curl -v -u admin:admin123 POST 'http://localhost:8081/service/rest/beta/components?repository=huongdanjava-releases' -F maven2.groupId=com.oracle.weblogic -F maven2.artifactId=wlthint3client -F maven2.version=10.3.6.0 -F maven2.asset1=@/Users/Khanh/Desktop/wlthint3client-10.3.6.0.jar -F maven2.asset1.extension=jar -F maven2.generate-pom=true |
Như các bạn thấy, ở đây chúng ta cũng cần phải khai báo username và password để thực hiện request URL trên.
Kết quả:
Shanam
bài viết chất lượng, cảm ơn tác giả