0

私はspring 4RESTを使用しています。

私にはベースがclassあり、他の多くclassは同じように拡張しています。たとえば、Employee はベースclassであり、他のクラス hr、engineer、trainer などは従業員を拡張します。

REST APIさまざまなタイプの従業員を作成するために作成する必要があります。あらゆるタイプの従業員を受け入れるものですinterface。サブタイプごとにPOST異なるものを作成することはできません。interfaceベースから、サブタイプが何であるかを知っています。

@RequestMapping(value= "/test/{employeeType}", method = RequestMethod.POST)
public void createEmp(@RequestBody Employee employee){

    //If type is HR, I want to cast to HR type
    //Is there any way we can take generic object in spring rest and then manage internally ?

}
4

1 に答える 1

0

多分これを試してみませんか?

@RequestMapping(value= "/test/{employeeType}", method = RequestMethod.POST)
public void createEmp(@PathVariable String employeeType, @RequestBody EmployeeDTO employeeDTO){
   transform(employeeType,employeeDTO);
}

ここで EmployeeDTO には可能なすべてのパラメーターが含まれるため、子クラスを構築できます。次に、employeeType に基づいて、ドメイン オブジェクト (Employee) に変換しますか?

要求に応じて Edit2

サンプルコードは次のとおりです。

public class Employee {

private String name;

}

public class Hr extends Employee {

private String department;

}

public class Hr extends Employee {

private String department;

}

次に、DTO クラスは次のようになります。

public class EmployeeDTO {

private String name;
private String course;
private String department;

}

次に、タイプがわかったら、DTO に必要なすべての値を使用して、必要なものに変換します

編集:考えてみると、これもオプションかもしれませんが、あなたのクラスを見る必要があります。

@RequestMapping(value= "/test/employee", method = RequestMethod.POST)
public void createEmp(@RequestBody Employee employee){

@RequestMapping(value= "/test/hr", method = RequestMethod.POST)
public void createHr(@RequestBody Hr hr){
于 2015-07-25T09:56:47.517 に答える