Dartを使用してRESTful APIを数分で作成する



翻訳者のメモ:素晴らしいDartプログラミング言語を見るもう1つの理由を読者に伝えたいと思います。今回は、RESTful APIをすばやく簡単に作成する方法についてお話します。 知らない人のために、 これはそれが何であるかを明確に説明しています。
そして、知っている人のために、猫へようこそ。

どこから始めるか


パブにはRPCと呼ばれる素晴らしいライブラリがあります。 これは、DartでサーバーRESTful APIを構築するための軽量パッケージです。 そして、それは私たちが必要とするすべてです。

pubspec.yamlのプロジェクトに依存関係を追加することから始めましょう。

dependencies: rpc: "^0.5.5" 

次に、pub getを呼び出してパッケージをプロジェクトにロードします。
これでインポートできます。

 import 'package:rpc/rpc.dart'; 


APIクラスを作成する


APIを含むAPIクラスを作成する必要があります。 これは、RPCライブラリの特別なアノテーション@ApiClassを持つDartクラスです。 注釈には1つの必須パラメーターがあります-versionは、提供されるAPIのバージョンを意味します。 たとえば、v1。 APIの名前を変更できるように、名前などの他のパラメーターを追加することもできます。

 @ApiClass(version: 'v1') class MyApi { //     } 

APIメソッド


GET、POST、DELETEなどを実行する機能を提供したい お問い合わせ。 私たちは皆、特別な注釈を付けたAPIクラスを作成しました。 メソッドはAPIクラスに直接配置するか、APIリソースを使用できます。

教室の方法


ここでは、動物用のGETメソッドと動物用のPOSTメソッドを作成します。 各メソッドには、メソッドを呼び出すためのパスを示す必須のパスパラメーターを含む@ApiMethodアノテーションが必要です。 メソッドのタイプ(GET、POSTなど)を示すパラメーターを指定することもできます。 このパラメーターが指定されていない場合、デフォルトでGETが設定されます。

 @ApiClass(version: 'v1') class MyApi { List _animals = []; @ApiMethod(path: 'animals') List<Animal> getAnimals() => _animals; @ApiMethod(path: 'animals', method: 'POST') Animal postAnimal(Animal animal) { _animals.add(animal); return animal; } } 

ここでは、リストを使用して動物を保存します。 また、2つのメソッドを提供します。getAnimals()はすべての動物のリストを返し、postAnimalは動物リストに新しい動物のエントリを追加します。 当然、この例を他のAPIメソッドで拡張できます。

これが機能するには、Animalクラスが必要です。
 class Animal { int id; String name; int numberOfLegs; } 

APIリソース


通常、特定のAPIメソッドを提供するリソースにAPIを分割します。 たとえば、動物用のAPI用と人用のAPI用に1つのリソースが必要です。 RPCライブラリを使用すると、これを簡単に行うことができます。

リソースクラスを作成し、リソースに関連付けられているすべてのメソッドをそこに移動します。
 class AnimalResource { List _animals = []; @ApiMethod(path: 'animals') List<Animal> getAnimals() => _animals; @ApiMethod(path: 'animals', method: 'POST') Animal postAnimal(Animal animal) { _animals.add(animal); return animal; } } 

次に、APIクラスにAnimalResourceのインスタンスを作成します。このクラスには@ApiResourceアノテーションがあります。
 @ApiClass(version: 'v1') class MyApi { @ApiResource() AnimalResource resource = new AnimalResource(); } 

テストAPI


APIを使用またはテストするには、binフォルダーにサーバースクリプトを作成する必要があります。 ここでApiServerを作成し、そこにAPIを追加して、localhost:8080をリッスンするHttpServerを作成する必要があります。
 library my_server; import 'dart:io'; import 'package:logging/logging.dart'; import 'package:rpc/rpc.dart'; import '../lib/server/api.dart'; final ApiServer apiServer = new ApiServer(prettyPrint: true); main() async { Logger.root..level = Level.INFO..onRecord.listen(print); apiServer.addApi(new MyApi()); HttpServer server = await HttpServer.bind(InternetAddress.ANY_IP_V4, 8080); server.listen(apiServer.httpRequestHandler); print('Server listening on http://${server.address.host}: ${server.port}'); } 

サーバーを起動するDartスクリプトをbinで実行します。 これで、APIがlocalhost:8080 / myApi / v1で利用可能になりました。 動物のリストを取得する場合は、localhost:8080 / myApi / v1 / animalsのGETリクエストを作成します。 または、同じlocalhostアドレス8080 / myApi / v1 / animalsにPOSTリクエストを行うことでエントリを追加できます。

POSTリクエストのテストはもう少し難しいです。なぜなら、 これを行うには、ChromeなどのツールまたはChrome PostmanまたはAdvanced RESTクライアントの拡張機能をインストールします。

それだけです、サーバーAPIはほんの数分で作成されました。

Source: https://habr.com/ru/post/J274887/


All Articles