JavaRush /Java Blog /Random-JA /春は怖くない。REST を制御する
Павел
レベル 11

春は怖くない。REST を制御する

Random-JA グループに公開済み
記事のサイクルの内容 他の人の作品を再利用することは、開発者にとって神聖な問題です 😌 次に進むには、コンピューター ネットワークの基本を理解する必要があります。ここに一連の記事があります。主要な点に注意してください: HTTP の仕組み、GET、POST、PUT とは何か、応答ステータス、MVC、 JSON とシリアル化については別途お読みください。提案された例をサーブレットで実装すると便利です。これは、Spring-Boot を心から愛するのに役立ちます。このシリーズのスプリングブート アプリケーションの例は非常に単純ですが、MVC の本質を理解するのに役立ちます。以下に、より興味深いプロジェクトへのリンクがあります。REST と Spring での REST の使用について詳しく知るには、これらの3 つの記事をお読みください。 最初の記事では、REST とは何かを説明します。 2番目の記事は要求と応答について述べています。必ず読んでフィデル同志のコメントに注目してください。 3 番目の記事では、Spring での実装の実際的な例を紹介します。アプリケーションを作成するアプローチはそれほど変わりません (見て比較すると便利です)。それを実装します。HttpStatus、ResponseEntity <?> について説明している箇所に注意してください (<?> がわかりにくい場合は、Herbert Shildt 著『Java. A Beginner's Guide』の第 13 章「一般化」を参照してください)。同じ記事で POSTMAN について説明されています (さらにそれに関する短いビデオ) POSTMAN をインストールします。すべての機能は必要ありません。さまざまなクエリの作成方法をご覧ください。例には三項演算子があります。忘れた場合は思い出してください。サンプル記事で @Autowired を使用して Bean インジェクションを実装する方法に注目してください。
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Spring 4.3 以降、クラスにコンストラクターが 1 つしかない場合、 @Autowired アノテーションを省略できることに注意してください。フレームワーク自体は、コンストラクターで Bean を実装する必要があることを認識します。詳細については、このソースを参照してください。そして、注意していれば、サービスパッケージの構造について疑問を持つはずです。つまり、なぜインターフェイス ClientServiceパブリック クラス ClientServiceImplがあるのですか- これは正しい習慣です。なぜそれが必要なのかについては後で説明します。それを使います。記事は以上です。読む前に、書いてみましょう。よく言われるように、「コードなしの日はありません!」開始点として、単純な GET リクエストを作成しましょう。前回、野菜投機用のアプリケーションを作成しました。 git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git アプリケーションを開き、ru.java で急いでコントローラー パッケージを作成します (MVC パターンのコントローラーはここに配置されます)。クラスを作成します。 public class ProductController
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
@RestController アノテーションは、これが REST コントローラーであることを Spring に示します。@RequestMapping - すべてのコントローラー メソッドは、注釈括弧 (「/speculation」) で指定された文字列で始まる URI を持つリクエストを受け取ります。クラス内に次のメソッドを書きます
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
プロジェクトを起動し、ブラウザ行に http://localhost:8080/speculation/simple を入力します。 答えは簡単です。 簡単な GET リクエスト いくつか説明します。 1. @RestController をコントローラーとしてマークしたクラスを作成し、そのパスへのパス @RequestMapping ("/スペキュレーション") – この注釈はオプションです。これがないと、パスは「/」で始まります。2. 実行時に文字列を返すメソッド (ライト GET リクエスト) を作成し、@GetMapping アノテーション (このメソッドが GET リクエスト専用であること) でマークし、メソッドへのパス (「/simple」) を示しました。 3. ポート 8080 でプロジェクト (サーバー) を起動し、次のアドレスに GET リクエストを送信しました:server/controller/method (http://localhost:8080/speculation/simple) 4. public String simple(){ returnこのリクエストでは「Easy GETリクエスタ」メソッドが機能しました。5. メソッドの結果は、文字列「Easy GET request」の形式でブラウザに返されました。さあ、始まりです!最も魅力的な記事があなたを待っています。上記で提案した内容をマスターするには 1 日以上かかります。ここで急ぐ必要はありません。このトピックは非常に重要であり、理解する必要があります。「象を部分的に食べる」。 トレーニングの場合 (教材をマスターした後):投機アプリケーション コントローラー を完了します。メソッドの作成: 1) ID で製品を検索 productService.findById() メソッドを使用します。 出力例
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
残りのコントローラー メソッドを実装した後、「なぜ最後の 2 つのフィールドが null なのでしょうか?そこに値が存在するようにするには何をする必要がありますか?」と考えてください。2) ストアフロント上のすべての製品を表示します。すべての製品を検索するには、productService.findAll() メソッドを使用します。 パッケージングフィールドとマークアップフィールドに入力するには、 productService.pack();を使用します。productService.makeMoney(); 出力には、製品をリストする JSON 配列が含まれている必要があります。例:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) データベースへの新しい商品の追加 (商品: キャベツと卸売価格を追加) 使用: productService.save(); このメソッドは、対応する Http ステータスを返す必要があります。4) ID による製品の削除 これを行うには、まずProductRepository.deleteById()を含むメソッドを ProductServiceに実装します そして、それをコントローラーで使用します。コントローラー メソッドは、適切な Http ステータスを返す必要があります。5) IDによる商品の変更(商品の卸価格と商品名の変更) これまでよりも操作が複雑になります。まず、変更する製品を ID で見つける必要があります。 productService.findById();を使用します。 次に、見つかったプロダクト (オブジェクト) で、フィールドの値を、Put リクエスト (json_object) の本文で受信したオブジェクトのフィールドの値に置き換えます。これは次のように実行できます。
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
この後、変更された製品を保存する必要があります productService.save(found_product); このメソッドは、対応する Http ステータスを返す必要があります。この方法で問題が発生した場合は、Google で「put request java」と検索してください。まだインターネットをキャンセルした人はいません) コントローラーの操作はこれで終わりではなく、この先にはまだ多くのトピックがあります...
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION