サーチ…


パラメーター

注釈カラム
@コントローラ注釈付きクラスが「コントローラ」(Webコントローラ)であることを示します。
@RequestMapping 特定のハンドラクラス(クラスで使用した場合)および/またはハンドラメソッド(メソッドで使用した場合)にWebリクエストをマッピングするアノテーション。
method = RequestMethod.GET HTTPリクエストメソッドのタイプ
ResponseBody メソッドの戻り値がWebレスポンス本体にバインドされる必要があることを示す注釈
@RestController @Controller + ResponseBody
@ResponseEntity HttpStatusステータスコードを追加するHttpEntityの拡張により、httpコードを返すように制御できます

RESTサービスの作成

  1. STS(Spring Starter Project)またはSpring Initializr( https://start.spring.io )を使用してプロジェクトを作成します
  2. pom.xmlにWeb依存関係を追加する:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

またはでウェブを入力しSearch for dependencies 、検索ボックスウェブの依存関係を追加し、zip形式のプロジェクトをダウンロードしてください。

  1. ドメインクラス(つまりユーザー)を作成する
 public class User {
    
        private Long id;
    
        private String userName;
    
        private String password;
    
        private String email;
    
        private String firstName;
    
        private String lastName;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        @Override
        public String toString() {
            return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", email=" + email
                    + ", firstName=" + firstName + ", lastName=" + lastName + "]";
        }
    
        public User(Long id, String userName, String password, String email, String firstName, String lastName) {
            super();
            this.id = id;
            this.userName = userName;
            this.password = password;
            this.email = email;
            this.firstName = firstName;
            this.lastName = lastName;
        }
    
        public User() {}
    }
  1. UserControllerクラスを作成し、 @RequestMapping @Controller@RequestMappingアノテーションを追加する
    @Controller
    @RequestMapping(value = "api")
    public class UserController {
    }
  1. 静的Listユーザー変数を定義して、データベースをシミュレートし、2人のユーザーをリストに追加する
    private static List<User> users = new ArrayList<User>();

    public UserController() {
        User u1 = new User(1L, "shijazi", "password", "[email protected]", "Safwan", "Hijazi");
        User u2 = new User(2L, "test", "password", "[email protected]", "test", "test");
        users.add(u1);
        users.add(u2);
    }
  1. 静的リスト(getAllUsers)内のすべてのユーザーを返すための新しいメソッドを作成する
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public @ResponseBody List<User> getAllUsers() {
         return users;
    }
  1. [ mvn clean install spring-boot:run ]でアプリケーションを実行し、このURLをhttp://localhost:8080/api/usersと呼んでmvn clean install spring-boot:run

  2. 我々は持つクラスに注釈を付けることができ@RestController 、この場合には、我々は、このクラスのすべてのメソッドからResponseBodyを削除することができます(@RestController = @Controller + ResponseBody)私たちが使用している場合、我々はリターンHTTPコードを制御することができますもう一つのポイントResponseEntity 、同じ以前の関数を実装しますが、 @RestControllerResponseEntityを使用し@RestController

@RestController
@RequestMapping(value = "api2")
public class UserController2 {

    private static List<User> users = new ArrayList<User>();

    public UserController2() {
        User u1 = new User(1L, "shijazi", "password", "[email protected]", "Safwan", "Hijazi");
        User u2 = new User(2L, "test", "password", "[email protected]", "test", "test");
        users.add(u1);
        users.add(u2);
    }
    
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public ResponseEntity<?> getAllUsers() {
       try {
           return new ResponseEntity<>(users, HttpStatus.OK);
       } catch (Exception e) {
           return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
       }
    }
}

今すぐアプリケーションを実行して、このURLをhttp:// localhost:8080 / api2 / usersとしてみてください

JERSEYおよびSpringブートによるレストサービスの作成

Jerseyは、Rest Servicesを作成するために利用できる多くのフレームワークの1つです。この例では、JerseyとSpring Bootを使用してRestサービスを作成する方法を示します

1.プロジェクトのセットアップ

STSを使用するか、またはSpring Initializrページを使用して新しいプロジェクトを作成できます。プロジェクトを作成する際には、次の依存関係を含めます。

  1. ジャージー(JAX-RS)
  2. ウェブ

コントローラの作成

Jersey Webサービス用のコントローラを作成しましょう

@Path("/Welcome")
@Component
public class MyController {
    @GET
    public String welcomeUser(@QueryParam("user") String user){
        return "Welcome "+user;
    }    
}

@Path("/Welcome")注釈は、このコントローラがURIパスに応答する必要があることをフレームワークに示します/ Welcome

@QueryParam("user")注釈は、 user名が1つのクエリパラメータを期待していることをフレームワークに示しuser

3.ジャージ構成の配線

SpringブートでJersey Frameworkを設定しましょう: org.glassfish.jersey.server.ResourceConfigを拡張するorg.glassfish.jersey.server.ResourceConfigコンポーネントではなく、クラスを作成します。

@Component
@ApplicationPath("/MyRestService")
public class JerseyConfig extends ResourceConfig {
    /**
     * Register all the Controller classes in this method 
     * to be available for jersey framework
     */
    public JerseyConfig() {
        register(MyController.class);
    }

}

@ApplicationPath("/MyRestService")は、パス/MyRestService向けられた要求のみがジャージーフレームワークによって処理されることをフレームワークに指示し、他の要求は引き続きSpringフレームワークによって引き継がれなければなりません。

@ApplicationPathで構成クラスに注釈を付けることをお勧めします。そうしないと、すべての要求がJerseyによって処理され、要求をバイパスして、必要に応じてSpringコントローラに処理させます。

4.完了

アプリケーションを起動し、次のようなサンプルURLを起動します(ポート8080で実行するようにスプリングブートを設定したと仮定します)。

http://localhost:8080/MyRestService/Welcome?user=User

ブラウザに次のようなメッセージが表示されます。

ようこそユーザー

そして、あなたはSpringブートであなたのJersey Webサービスを使っています

RestTemplate(GET)を使用したREST APIの使用

RestTemplate使用してREST APIを使用するには、SpringブートRestTemplateを使用してSpringブートプロジェクトを作成し、 Web依存関係が追加されていることを確認します

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

プロジェクトを設定したらRestTemplate Beanを作成します 。これは、すでに生成されているメインクラス内で行うことも、別の設定クラス( @Configurationアノテーションを付けたクラス)内で行うこともできます。

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

その後、RESTサービスの作成時と同様にドメインクラスを作成します。

public class User {
    private Long id;
    private String username;
    private String firstname;
    private String lastname;

    public Long getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}

あなたのクライアントで、RestTemplateをautowireしてRestTemplate

@Autowired
private RestTemplate restTemplate;

1人のユーザーを返すREST APIを使用するには、次のコードを使用できます。

String url = "http://example.org/path/to/api";
User response = restTemplate.getForObject(url, User.class);

リストやユーザーの配列を返すREST APIを使用して、2つのオプションがあります。配列としてそれを消費するか、

String url = "http://example.org/path/to/api";
User[] response = restTemplate.getForObject(url, User[].class);

または、 ParameterizedTypeReferenceを使用して消費します。

String url = "http://example.org/path/to/api";
ResponseEntity<List<User>> response = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<List<User>>() {});
List<User> data = response.getBody();

ParameterizedTypeReferenceを使用する場合、より高度なRestTemplate.exchange()メソッドを使用する必要があります。 RestTemplate.exchange() 、そのサブクラスを作成する必要があります。上記の例では、匿名クラスが使用されています。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow