NexusはAPIを使用して操作します

NexusはAPIを使用して操作します

Nexus は RestApi を提供していますが、一部の API はまだ Groovy と組み合わせて動作させる必要があります。バージョン 3.3 以降では機能強化されていますが、通常の RestApi と比較すると、まだいくつかの「使用上の特徴」があります。この記事では、raw リポジトリの作成を例に、関連する使用方法を確認します。

前提条件

動作するNexusを準備します。バージョン3.2.1はこちらです。

APIメカニズム

この記事では、Nexus 3 が最初にリリースされたときの API の設計思想を紹介します。主に Groovy スクリプトを使用して関連機能を完成させます。つまり、ユーザーは Groovy スクリプトを自分で用意する必要があり、Nexus はスクリプトをアップロードして実行するためのインターフェイスを提供します。少し大まかですが、ほとんどの機能はユーザーが使用できるように残されています。強力な Groovy スクリプトにどのような機能を実装する必要があるかは、ユーザー自身のニーズによって異なります。ある程度、APIを作成できるAPIです

使い方

ステップ1: jsonファイルをキャリアとして使用して実行可能なGroovyスクリプトを作成する

形式はおおよそ次のようになります。

{
 "name": "スクリプト名",
 "タイプ": "グルーヴィー",
 "content": "Groovy ステートメント"
}

注記:

  • 二重引用符と一重引用符の使い方に注意してください
  • スクリプトの名前は後続の API の一部となるため、命名には注意してください。

ステップ2: jsonファイルをアップロードする

Groovy操作を含む対応するJSONファイルをアップロードするには、次のメソッドとインターフェースを使用します。

  • インターフェース: /service/siesta/rest/v1/script
  • メソッド: POST
  • ファイル: 手順1で準備したファイルをPOSTの内容として渡します。

ステップ3: Groovyファイルを実行する

次のインターフェースを使用して、手順 2 でアップロードした Groovy スクリプトを実行します。

  • インターフェース: /service/siesta/rest/v1/script/スクリプト名/run
  • メソッド: POST

スクリプト名も実行インターフェースの一部となるため、名前の付け方が非常に重要になることに注意してください。

使用例

ここでは上記の方法を使用して、Nexus で Raw タイプのリポジトリを作成する方法を説明します。

ステップ1: jsonファイルをキャリアとして使用して実行可能なGroovyスクリプトを作成する

リポジトリ作成時に BLOB を指定する必要があるため、指定しない場合はデフォルトが使用されます。ただし、プロジェクト数が多い場合は、デフォルトは非常に大きくなります。前回の Nexus の使い方の紹介では、リポジトリごとに独自の BLOB を作成することも説明しましたので、ここでは次の json ファイルを作成します。

liumiaocn:~ liumiao$ cat rawrepotest1.json 
{
 "名前": "rawrepotest1",
 "タイプ": "グルーヴィー",
 "content": "def rawStore = blobStore.createFileBlobStore('rawrepotest1', 'raw'); repository.createRawHosted('rawrepotest1', rawStore.name);"
}
liumiao:~ liumiao$ を

提案: この Nexus の使用方法は完全な方法ではないため、BLOB とリポジトリの関係がより明確になるように、rawrepotest1 と同じように使用することをお勧めします。これは、無視できるサイズの json ファイルをさらにいくつかアップロードするだけです。

ステップ2: jsonファイルをアップロードする

liumiaocn:~ liumiao$ curl -X POST -u admin:admin123 --header "Content-Type: application/json" http://localhost:32004/service/siesta/rest/v1/script -d @rawrepotest1.json
liumiao:~ liumiao$ を

ステップ3: Groovyファイルを実行する

liumiaocn:~ liumiao$ curl -X POST -u admin:admin123 --header "Content-Type: text/plain" http://localhost:32004/service/siesta/rest/v1/script/rawrepotest1/run
{
 "名前" : "rawrepotest1",
 "結果" : "RepositoryImpl$$EnhancerByGuice$$13e8178d{type=hosted、format=raw、name='rawrepotest1'}"
}liumiao:~ liumiao$

結果確認

ブロブの確認

対応する BLOB が生成されました: rawrepotest1

リポジトリの確認

対応する生のリポジトリが生成されました: rawrepotest1

まとめ

Nexus と groovy を組み合わせることで API 統合を実現できますが、この方法はまだ多くの不変条件が使用されています。複数回実行中にエラーが発生するかどうかは、groovy スクリプトで確認する問題になっています。関連機能が強化されるかどうかは、Nexus の今後のバージョンのサポートに依存する可能性があります。groovy との組み合わせが機能移行期間中に対応する方法になるかどうかは、さらに観察する必要があります。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • idea maven nexus の共通コマンド設定の詳細な説明
  • Maven プロジェクト (jar パッケージ) を Nexus プライベート サーバーに公開する方法
  • プロジェクトをパッケージ化して Nexus プライベート サーバーにアップロードする方法に関する Maven の詳細なチュートリアル
  • springboot~nexusプロジェクトパッケージのサンプルコードの詳細な説明
  • Nexus を使用して Maven プライベート サーバーを構築する方法
  • Maven 入門: Nexus を使用して Maven プライベート サーバーを構築し、jar パッケージをアップロードおよびダウンロードする
  • Nexus を使用してローカル エリア ネットワークで Maven プライベート サーバーとアイデアを構築する方法
  • Nexus サーバーを設定するための詳細な手順
  • Nexus のインストールと設定のグラフィック チュートリアル

<<:  Centos6.9 インストール Mysql5.7.18 ステップ記録

>>:  Vue2.x プロジェクトのパフォーマンス最適化のためのコード最適化の実装

推薦する

ミニプログラムはミニプログラムクラウドを使用してWeChatの支払い機能を実装します

目次1. WeChat Payを開く1.1 アフィリエイト加盟店番号1.2 加盟店番号を追加する1....

HTML でのフォームとフォーム送信操作に関する情報のコレクション

ここでは、フォーム要素とフォーム送信に関する知識を紹介します。フォーム要素フォーム要素の DOM イ...

MySQL トランザクション自動コミット自動コミット操作

MySQL のデフォルトの動作モードは自動コミット モードです。つまり、明示的にトランザクションを開...

jsを使用して動的な背景を実現する

この記事の例では、動的な背景を実現するためのjsの具体的なコードを参考までに共有しています。具体的な...

Tomcatにデプロイされたアプリケーションがフロントエンドページにアクセスできない問題について

最近、実践的なトレーニング プロジェクトを実行する際に ssm フレームワークを使用しました。プロジ...

CSS プロパティ *-gradient の実用的な価値を探る

まず興味深い性質であるconic-gradientを紹介しましょう。円錐グラデーション!円グラフの作...

Docker で nginx の https を設定する方法

https をサポートしていない Web サイトは、ブラウザによって徐々に安全でないとマークされるた...

ネイティブJSで実装されたギャラリー機能

目次最初2番目Native Js はギャラリー機能を実装します。画像をクリックすると、対応する拡大画...

適応幅(パーセンテージ)に応じて Div の高さを調整する純粋な CSS

今日のレスポンシブ レイアウトの要件では、サイズを自動的に調整できる多くの要素で高さと幅の適応を実現...

vue-nuxt ログイン認証の実装

目次導入リンク始めるコードを読み進めてくださいプロキシ設定傍受を要求する異なるプレフィックスを持つイ...

JavaScriptは検証コードと検証のランダム生成を実装します

この記事では、検証コードのランダム生成と検証を実現するためのJavaScriptの具体的なコードを参...

vue3.0+vant3.0の迅速なプロジェクト構築の実装

目次1. プロジェクトの構築2. Vue3 体験 + Vant 紹介2020年9月18日にvue.j...

MySQL ステートメントにおける IN と Exists の比較分析

背景最近、SQL 文を書くときに、IN と Exists のどちらを選択するか迷ったので、両方の方法...

MySQL のマスタースレーブレプリケーションと読み取り書き込み分離の原理と使用法の詳細な説明

この記事では、例を使用して、MySQL マスター/スレーブ レプリケーションと読み取り/書き込み分離...

Apple Watchのインタラクションデザインにおける4つの全く異なる体験が明らかに

今日も Watch アプリのデザインに関する話です。私はケーススタディが大好きなので、同じトピックを...