标签: restful-architecture

桌面,android和ios客户端的java-ee应用程序

我正在使用java enterprise和glassfish构建一个应用程序.客户端和服务器之间的信息通常是少量数据,但客户端有时需要获得更大的资源(典型值为1-20 MB).我仍然在计划系统的体系结构,我需要一些关于如何将服务器上的资源暴露给多个客户端的建议.

最初我只是在javaws和glassfish提供的ACC中运行桌面客户端应用程序.我将远程接口放在一个单独的jar中,并计划通过调用通过这些接口公开的EJB方法来完成所有客户端服务器接口.这对于Java桌面客户端来说都很好.对于Android客户端来说它应该很容易.但我认为它不会像ios一样容易.

有什么办法可以从运行在iphone或ipad中的objective-c调用我的EJB吗?我当然希望如此.

我期待该解决方案是一个RESTful Web服务.据我所知,这是一种通过以通用XML或JSON形式传递数据来松散地耦合客户端和服务器应用程序的方法.

对不起,如果我遗漏了一些非常明显的东西,但似乎有两条路线从这里:

  1. 保留我的EJB业务接口,并为通用客户端实现重复的restful接口(iOS以及其他可能在以后出现的其他接口).

  2. 为所有客户创建一个restful接口.

2号似乎是一个更清洁的设计,但这意味着我必须废弃已经完成的工作并了解休息.有经验的人可以提供一些建议吗?我非常感激.

android ejb java-ee ios restful-architecture

4
推荐指数
1
解决办法
2877
查看次数

为用户与其他实体交互构建 URL 的 RESTful 方式是什么?

我试图找出构建用户与其他实体交互的 URL 的正确 RESTful 方法是什么?

例如,我有三个实体:userspoststags

如何表示“用户喜欢帖子”、“用户关注标签”或“用户关注用户”。

这是我的想法,但我不确定这是否是正确的方法:

POST /user/:id/like/post/:id(用户喜欢帖子)

POST /user/:id/follow/user/:id(用户关注另一个用户)

看起来很语义化,但我不确定 POST 方法

rest http restful-url restful-architecture

4
推荐指数
1
解决办法
1555
查看次数

REST设计:用于过滤服务的动词和资源名称

我正在开发一个清理/过滤服务,它有一个方法接收在xml中序列化的对象列表,并应用一些过滤规则来返回这些对象的子集.

  1. 在REST-ful服务中,我应该使用什么动词来表示这种方法?我认为GET是一个很自然的选择,但是我必须将序列化的XML放在请求的主体中,但有效但感觉不正确.其他动词似乎不符合语义.

  2. 定义Service接口的好方法是什么?命名资源/清理或/过滤器似乎很奇怪主要是因为在我看到的在线示例中,它始终是名称而不是用于资源名称的动词.

  3. Am I right to feel that REST services are better suited for CRUD operations and you start bending the rules in situations like this service? If yes, am I then making a wrong architectural choice.

  4. I've pushed to develop this service in REST-ful style (as opposed to SOAP) for simplicity, but such awkward cases happen a lot and make me feel like I am missing something. Either choosing REST where it shouldn't be used or may be …

rest webserver http restful-architecture

4
推荐指数
1
解决办法
1110
查看次数

在Laravel 4中命名为宁静的路线

所以,我已经能够让安静的控制器工作了

Route::controller('users','UserController');

class UserController extends BaseController {
    public function getAccount(){}
}
Run Code Online (Sandbox Code Playgroud)

所以/users/account工作.但是,如果我尝试做类似的事情

Route::any('account',array('as' => 'account','uses' => 'UserController@account'));
Run Code Online (Sandbox Code Playgroud)

然后去/account,它不起作用(NotFoundHTTPException).有没有办法结合使用命名路由和restful控制器?我喜欢restful系统如何分解请求,以及命名路由如何封装URI并将它们与函数名称分离.这在Laravel 3中有效.我在语法中遗漏了什么,或者Laravel 4是否故意禁止这种混合搭配行为?谢谢...

restful-architecture laravel laravel-4 laravel-routing

4
推荐指数
1
解决办法
1844
查看次数

REST:如何处理更改多个资源的操作

我试图了解基于资源的RESTful架构.我知道HTTP GET on /accounts会列出帐户,GET on /accounts/123会提供给定帐户的详细信息.如何在RESTful架构中实施主动管理,例如将资金从帐户A转移到帐户B?

rest restful-architecture

4
推荐指数
1
解决办法
108
查看次数

如何为swagger API添加通用参数

我的项目中有很多带有此类注释的控制器

    @ApiOperation(value = "description")
    @RequestMapping(value = "/{param1}", method = RequestMethod.POST)
    public @ResponseBody Response<Map<String, Object>> someMethod(
       @ApiParam(name = "param1", value = "about param1", required = true)
       @PathVariable("param1") int param1,

       @ApiParam(name = "param2", value = "about param2", required = false, defaultValue = "default)
       @RequestParam(value = "param2", defaultValue = "default") String param2
    ){
           // ..
    }
Run Code Online (Sandbox Code Playgroud)

几乎每种方法都接受通用参数,例如access_token。如果将描述添加到所有方法中,将是不好的解决方案。也许还有其他解决方案?

我发现我可以json使用这样的配置来定义文件,例如:https://github.com/OAI/OpenAPI-Specification/blob/master/fixtures/v2.0/json/resources/reusableParameters.json,但是据我所知我可以使用json或注释。或者,也许我可以以某种方式将它们结合起来?

json restful-architecture swagger-ui

4
推荐指数
1
解决办法
1928
查看次数

在什么包含对"REST"这个词及其含义的误解

确定什么是真正的RESTFull应用程序和/或api并不总是很容易,因为对于REpresentational State Transfer架构风格的含义和范围存在一种误解.

最初,我对于什么来说很麻烦,这个形容词"REpresentational"的首字母缩略词REST引用了.这是因为"代表性国家"听起来不太好......

此外,我对这种建筑风格的作者罗伊菲尔丁的博客文章印象深刻,他对基于http动词的api经常出现的误解感到非常失望,特别是他抱怨客户端和客户之间的耦合.这些api的服务器有关其名称和数据结构的信息.

博客文章参考:http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

我想尝试只给出关于REST arch的理论解释.风格,我想知道其他观点.

rest restful-architecture

4
推荐指数
2
解决办法
3万
查看次数

REST API 版本控制 - 流行的 API

我正在尝试收集有关 REST 版本控制的信息。当我查看论坛时,最喜欢的似乎是使用Accept标题。但是,如果我查看 StackExchange、Google、Twitter、Yahoo、Instagram 和 eBay 的 API,它们都通过 URI 使用版本控制。

我不明白为什么他们更喜欢这种方式而不是 HTTP 标头。我想知道事实,而不是意见。有人能帮忙吗?

architecture rest restful-architecture

4
推荐指数
1
解决办法
2263
查看次数

AWS Lambda python API调用方法不返回JSON - 不可序列化?

我有一个Lambda函数,它是对API的基本Python GET调用.它在本地工作正常,但是当我上传到Lambda(以及请求库)时,它不会从API调用返回JSON响应.我只是希望它将整个JSON对象返回给调用者.我在这里做了一些根本错误的事情 - 我偶然发现了几篇文章说不支持从Lambda Python函数返回JSON.

这是代码:

import requests
import json
url = "http://url/api/projects/"
headers = {
   'content-type': "application/json",
   'x-octopus-apikey': "redacted",
   'cache-control': "no-cache"
    }

def lambda_handler(event, context):
    response = requests.request("GET", url, headers=headers)
    return response
Run Code Online (Sandbox Code Playgroud)

我的包中包含请求库和dist,以及json库(我不认为它需要这个).返回的错误消息是:

    {
  "stackTrace": [
    [
      "/usr/lib64/python2.7/json/__init__.py",
      251,
      "dumps",
      "sort_keys=sort_keys, **kw).encode(obj)"
    ],
    [
      "/usr/lib64/python2.7/json/encoder.py",
      207,
      "encode",
      "chunks = self.iterencode(o, _one_shot=True)"
    ],
    [
      "/usr/lib64/python2.7/json/encoder.py",
      270,
      "iterencode",
      "return _iterencode(o, 0)"
    ],
    [
      "/var/runtime/awslambda/bootstrap.py",
      41,
      "decimal_serializer",
      "raise TypeError(repr(o) + \" is not JSON serializable\")"
    ]
  ],
  "errorType": "TypeError",
  "errorMessage": "<Response [200]> …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services python-2.7 restful-architecture aws-lambda

4
推荐指数
1
解决办法
4996
查看次数

REST API:单个API应该承担多重责任吗?

我们对商品网站进行了分类,我们没有登录,但用户可以查看其他用户列出的商品.要查看其他用户的详细信息,他们必须提供其联系详细信息.要验证用户是否提供了正确的手机号码,我们会将OTP代码发送回该号码.API流程如下所示:

1)//当用户填写表单以获取特定股票的卖家详细信息时要触及的API(这需要"stockId"和"mobile"作为输入):

POST /api/lead/
{
  "stockId":123,
  "mobile":9890384328
}
Run Code Online (Sandbox Code Playgroud)

如果"移动"已经过验证,API的响应(响应代码:200):

{
  "sellerName": "xyz",
  "sellerMobile": "+123232312",
  "sellerAddress": "21, park street, new york"
}
Run Code Online (Sandbox Code Playgroud)

如果"移动"尚未验证,则回复(响应代码:403):

{
   "OTP verification required. OTP is sent to the mobile number."
}
Run Code Online (Sandbox Code Playgroud)

2)用户在移动设备上收到的OTP再次向同一个引导API发回请求:

{
      "sellerName": "xyz",
      "sellerMobile": "+123232312",
      "sellerAddress": "21, park street, new york",
      "otp": 1234
}
Run Code Online (Sandbox Code Playgroud)

如果OTP正确,它会发回卖家详细信息作为回应.如果提供的OTP不正确,则响应为:

{
  "Incorrect OTP."
}
Run Code Online (Sandbox Code Playgroud)

我在这个API设计中看到了一些问题:

  1. 这个API正在做很多工作,即返回卖家详细信息,返回OTP,验证OTP等.我们可以轻松地将OTP相关功能打破到其他API.例如,一个用于生成OTP的API,即GET/api/otp /,其他用于验证OTP的API,即POST api/verifyotp /.这会增加来自客户端的API调用次数,即第一个客户端将启动POST引导API,如果未验证数量,客户端将命中OTP API.要通过OTP验证,它将调用verifyOTP api.如果获得验证,则会调用潜在客户API来获取卖家详细信息.因此,基本上它在上述方法中进行了4次API调用和2次API调用.
  2. 这不是HATEOS的抱怨,它暗示"REST客户端通过一个简单的固定URL进入REST应用程序.客户端可能采取的所有未来操作都是在服务器返回的资源表示中发现的."

有人可以建议哪种方法更好吗?

api rest hateoas restful-architecture

4
推荐指数
1
解决办法
632
查看次数