簡體   English   中英

實施REStful Web服務最佳實踐?

[英]Implementing REStful web services best practice?

我正在使用Jersey Restful webservices.I低於終點。

@Path("/persons")
public class PersonWS {
    private final static Logger logger = LoggerFactory.getLogger(PersonWS.class);

    @Autowired
    private PersonService personService;

    @GET
    @Path("/{id}")
    @Produces({MediaType.APPLICATION_XML})
    public Person fetchPerson(@PathParam("id") Integer id) {
        return personService.fetchPerson(id);
    }

    @POST
    @Path("/add")
    @Consumes(MediaType.APPLICATION_XML)
    @Produces (MediaType.APPLICATION_XML)
    public Person addPerson(Person person) {
        personService.addPerson(person);
        return person;
    }
}

上面的類沒有實現任何接口。 我應該先編寫一個接口並在PersonWS.java中實現該接口的方法嗎? 還是無需在此處編寫任何接口?

謝謝!

具有接口的唯一點是提供不同實現的選項。 通常,除主要實現外,唯一的其他實現是用於測試的模擬。 但是,現代的模擬框架可以輕松地模擬出您的實現類,而無需單獨的接口。

在早期,接口對於使用動態代理(Spring AOP)實現的方法攔截器之類的技術也是必需的,但此要求已被加載時編織和其他現代技術所淘汰。

由於這些原因,我發現在接口中維護所有方法的重復項的開銷沒有現代應用程序體系結構的任何實際好處所能證明。

提供接口的另一個原因是,如果需要(例如,使用spring),或者如果您希望跨模塊共享和分配應用程序的合同,則允許將控制器注入另一個控制器:您的合同jar將包含域和接口-無需考慮實現,也無需將所有實現嵌入所有模塊中。

可以將其視為一種良好的做法,因為它提供了松散的耦合並為不斷發展的應用做好了准備,但是如果您不需要它,則不需要技術來提供接口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM