草庐IT

java - REST API 版本控制

我目前正在开发基于Java的Web应用程序。最近我们使用Spring创建了一些REST端点。这样做的原因是因为我们开发了一个混合移动应用程序,它通过这些端点与我们的主应用程序集成。问题是future我们不太确定如何处理更新。如果我们更新我们的API,例如我们更改端点方法的方法签名或我们更改我们作为JSON返回的DTO上的属性,那么如果我们的移动用户运行的是过时版本的移动应用程序,我们就会遇到问题。我们想要实现的是在应用程序过时时强制用户更新应用程序。我见过很多这样做的移动应用程序。所以我们想到为我们的RESTAPI提供一个API版本,然后让移动应用程序检查它使用的版本是否与我们的服务器

java - Spring 通用 REST Controller : parsing request body

我有以下Controller:@RestController@RequestMapping(value="/{entity}",produces=MediaType.APPLICATION_JSON_VALUE)publicclassCrudController{@RequestMapping(method=GET)publicIterablefindAll(@PathVariableStringentity){}@RequestMapping(value="{id}",method=GET)publicTfindOne(@PathVariableStringentity,@PathV

javascript - 如何在客户端使用 React 的 BrowserRouter,在服务端使用 Java REST API (Spring Boot)?

我想在客户端上使用React,在服务器上使用JavaSpringBoot来获取RESTAPI,客户端和服务器都打包在一起,因此它们托管在同一个应用程序服务器上。我已经可以通过/api路径查询服务器API。但是(如何)我可以在客户端上使用react-router-dom(Routerv4)的BrowserRouter而不是HashRouter?我不太了解SpringBoot,但我想我可以检查服务器是否路由不匹配/api,然后我会返回index.html所有反应逻辑处理基于HTTP查询位置路径的路由?我希望我很清楚,我不希望URL中的散列和路由必须在客户端上完成。

java - Tomcat 7,Spring rest 模板应用程序在浏览器中生成 err_invalid_chunked_encoding

我有一个Tomcat7,Spring4.2'RestController'RESTAPI的实现,它似乎为返回JSON响应的少数API调用生成了'ERR_INVALID_CHUNKED_ENCODING'。创建ResponseEntity的代码相同。但是对于少数API调用,"Content-Length"设置正确,而其他调用"Transfer-Encoding"设置为Chunked。privateCacheControlcacheControl=CacheControl.noStore().mustRevalidate();protectedResponseEntity>createEn

java - 带有日期对象的 Jersey + Jackson 反序列化失败

我同时使用jersey和jackson来开发我的RESTAPI,但在反序列化日期字符串时遇到问题。我已经在Jersey注册了一个提供者类:@ProviderpublicclassMyJsonProviderextendsJacksonJsonProvider{publicstaticfinalStringDATE_FORMAT="yyyy-MM-ddHH:mm:ss";@OverridepublicvoidwriteTo(Objectvalue,Classtype,TypegenericType,Annotation[]annotations,MediaTypemediaType,Mu

java - 等效于 Jersey/JAX-RS/REST 资源的 Servlet 过滤器?

在一个常规的Web应用程序中,我可以为身份验证、授权、错误、日志记录等方面的各种路径分配一个过滤器链。优点是我编写servlet以专注于核心功能而不用担心基础设施方面。我可以编写正交的、横切的Filter来进行身份验证、授权等。然后我可以将它们编织在web.xml中。查看web.xml足以让我确信我的应用程序中没有漏洞。这在JAX-RS或Jersey中可行吗?如果不是,我最好的选择是什么? 最佳答案 虽然与servlet过滤器不同,但Jersey支持ContainerResponseFilter和ContainerRequestFi

java - 不区分大小写的查询字符串请求参数

我的目标是URI下面的所有内容都应该有效https://rest/xyz?排序=名称https://rest/xyz?排序=名称https://rest/xyz?过滤器=name=valuehttps://rest/xyz?过滤器=name=value为了实现这一点,我创建了自定义过滤器来覆盖传递给FilterChain的HttpServletRequest。以下是此方法的链接:http://forum.springsource.org/archive/index.php/t-87433.html我的代码:importjava.io.IOException;importjava.uti

java - 在哪里以及如何解码@PathVariable

客户端在服务器上发送(实现无关紧要):/path/items/+urlencode(id,SOME_ENCODING)考虑结果URL将是:/path/items/my%2Fkey因此我在服务器上有:@RequestMapping(value="/path/items/{identifier}",method=RequestMethod.GET)publicItemget(@PathVariableStringidentifier){try{returnDAO.getItemByIdentifier(URLDecoder.decode(identifier,SOME_ENCODING))

java - 如何使用 Spring 数据 REST 公开自定义 DTO crud 存储库?

我不想公开我的模型类(jpa实体),而是公开它们具有不同数据传输对象(DTO)的属性的不同子集。这个想法是DTOCrudRepositoryJpaRepositoryentities,我想通过SpringDataREST公开DTOCrudRepository.例子:实体:@Entity@Table(name="groups")publicclassGroup{privateLongid;privateStringname;privateSetusers;//otherattributes@Id@GeneratedValue@Column(name="group_id")publicLo

java - Spring PUT 请求 : Unsupported Media Type (Code: 415)

我有一个相当晦涩的问题,经过几天的调试后我无法弄清楚。问题是我们的PUTRESTAPI之一开始在生产中抛出UnsupportedMediatype。下面是方法的定义:@RequestMapping(value="/v1/put/user/profile",method=RequestMethod.PUT)publicStringupdateProfile(@RequestBodyUserAndroiduser,ModelMapmodel,HttpServletRequestrequest,HttpServletResponseresponse){}在PUT请求中,我们只是传递手机号码,