我正在创建RESTful Web服务,其中一些资源是计算或处理功能.例如,用户可以通过提交图像并接收缩放或转换的图像来缩放和转换图像.
根据RESTful Web Services Cookbook第2.5节,我应该使用GET:
Treat the processing function as a resource, and use HTTP GET to fetch a
representation containing the output of the processing function. Use query
parameters to supply inputs to the processing function.
Run Code Online (Sandbox Code Playgroud)
对于输入很简单的情况(例如点的长/纬度坐标),这很明显.但是,我应该对图像等较大的输入采用相同的建议吗?据我所知,不可能将这么多数据作为查询参数发送.
我正在使用ASP.NET Web Api编写验证密码服务.
该服务接受当前登录用户的密码,验证它并返回编码值.这一切都发生在SSL上.
调用此方法不会导致状态更改.
最初这看起来应该是一个GET请求但是在进一步检查时我担心Web服务器记录纯文本密码.
我们可以将其作为一个实现,POST但这似乎是动作的错误动词.
这只是一个实用主义而不是程序的情况还是我们可以做更多的事情来实现实用和RESTful案例?
我有一个应用程序,它具有数据访问,业务和wcf服务的层.我需要将此WCF层转换为Web API,并且我是否应该:
1)创建两个服务层/项目: - 服务(类库) - Services.Api(用于公开和包装对服务类库的调用的WebAPI)
2)或者,只需创建一个WebAPI项目.
我想我在#2中看到的问题是它限制了我如何重用库 - 我只能使用REST来使用服务.使用#1,我可以根据需要在我的Web控制器和客户端/ ajax上的WebAPI中使用类库.我在#1中看到的问题是重复调用服务层类库所需的所有额外代码.
希望有意义.请让我知道你对我可能会采取什么样的好方法和做法的想法,或者因为我缺乏理解而尖叫我.谢谢
design-patterns web-services restful-architecture asp.net-web-api
http://api.bitcoincharts.com/v1/markets.json(示例)
我计划访问下面提到的几个REST端点的数据,并且在某些时候由于连接错误或服务不可用而导致某些端点的访问失败.我只对数据的最后一个快照感兴趣.为了解决这个问题,我想将最新的快照存储在数据存储(最好是NoSQL)中,比如Mongo或Redis,并希望修改应用程序逻辑,以便始终查看这些数据源而不是API端点.这总是提供可预测的数据,我打算运行一些CRON脚本来定期从这些REST端点提取数据并将其存储在上述数据源中.
http://api.foo.com/v1/foo.json
http://api.bar.com/v1/bar.json
http://api.baz.com/v1/baz.json
Run Code Online (Sandbox Code Playgroud)
我有3种类型如下.不同的模型可以有不同的属性.属性是代码描述属性,意味着它是有限的值集.
CarModel
{
int Id;
string Name;
}
CarAttributeType
{
int Id;
int ModelId;
string GroupName;
int DataOrder;
bool Mandatory;
// default values etc.
}
CarCodeDescriptions
{
int Id;
int AttributeTypeId;
int Code;
int Descr;
}
Run Code Online (Sandbox Code Playgroud)
要将这种模型用于实际汽车,最后会有解释.
好.现在我希望客户端可以获取,添加和更新整个模型的GET,POST和PUT操作.我是否制作了包含所有这些内容的类型
CarModelContainer
{
CarModel Model;
IEnumerable<CarAttributeType> Attributes;
IEnumerable<CarCodeDescriptions> Attributes;
}
Run Code Online (Sandbox Code Playgroud)
然后有:
[Route("carmodels/{id:int}"")]
public CarModelContainer Get(int id)
{
return Persistence.Instance.GetCarModel(id);
}
[Route("carmodels")]
public IEnumerable<CarModelContainer> GetAll()
{
return Persistence.Instance.GetCarModels();
}
Run Code Online (Sandbox Code Playgroud)
或者是否希望在不制作此容器类的情况下以某种方式执行此操作(输出参数或其他内容)?我真的迷失在这里.
要使用实际车型:
Car
{
int Id;
int ModelId;
//ETC
}
CarAttribute
{
int Id;
int …Run Code Online (Sandbox Code Playgroud) 我正在开发一个WCF RESTful服务,并注意到在某些地方我可以用多种方式表示非CRUD操作(而不是资源).
假设我们购买了一台新电视并将其连接到我们的专用网络.现在我们要构建一个Web服务来查看和控制电视.
要阅读和更新电视的属性,我们将使用以下URI:
http:// domain/tv / GET | PUT - 获取和更新电视属性.(company,owner,inches)
对于使用视频,我们将使用以下URI:
ws:// domain/tv/video - (假设WebSocket是视频内容传输的最佳选择)
和操作:
updateVersionstartBIT (内置自检)changeChannelturnVolumeUp, turnVolumeDown第一种设计是使用属性来表示操作.服务器将注意到属性更改,然后执行所需的操作.最后POST荷兰国际集团不能由性质来表示的操作:
http:// domain/tv / GET | PUT - 获取或设置
volume或channel使用json对象.并为
updateVersion或startBIT:http:// domain/tv / POST {function:'updateVersion'}或{function:'startBIT'}
第二种设计是使用Command资源表示所有操作:
http:// domain/tv/commands POST {{命令:'BIT',发送者:'Dan'...} - 创建新的执行命令
startBIT,changeChannel或者turnVolume
第三种设计是表示每个操作,可以作为名词作为资源发音,其余作为属性:
http:// domain/tv/versionUpdates GET | PUT …
据我了解,HTTP GET请求应该返回请求的数据,如果安全(只读)和幂等(没有副作用),则认为是RESTful.
但是,我想实现一个服务来显示自上次访问以来使用URI的新项目/items/userid/new,是否可以以任何方式RESTful?
返回数据时,响应GET请求而发送的项目应标记为已读,以便跟踪新内容.标记这些项目将违反安全要求和幂等要求.
这是否意味着.../new从未被视为RESTful?
我目前正在集思广益,并试图弄清楚这是否可行或更好的方法来处理这种方法.
假设我有一个Redshift表,我想通过REST API公开这个表.例如,有几个客户需要此表中的某种元数据.他们将调用REST服务,它将在Redshift上执行以获取数据,并以JSON格式响应客户端.
我在Redshift/AWS领域相当新,所以不确定AWS是否已经有了这方面的东西?我知道S3支持REST API.
这听起来可行吗?我绝对可以使用Java编写典型的RESTful服务,同时使用JDBC从Redshift读取数据.但是想知道在AWS世界中是否有更好的方法来处理这个问题.
rest amazon-ec2 amazon-web-services restful-architecture amazon-redshift
我想从服务器下载文件,然后按以下方式定义swagger文件:
swagger: '2.0'
################################################################################
# API Information
################################################################################
info:
version: v0
title: XXX REST API
host: api.xxx.io
basePath: /v0
schemes:
- http
- https
produces:
- application/json
################################################################################
# Security
################################################################################
################################################################################
# Parameters
################################################################################
parameters:
productId:
name: productId
in: path
description: The product identifier
type: string
required: true
################################################################################
# Paths
################################################################################
paths:
/products:
get:
description: Get the list of products
operationId: getProducts
responses:
200:
description: OK
schema:
type: array
items:
$ref: '#/definitions/Product'
/resources/{productId}:
parameters:
- $ref: '#/parameters/productId'
get: …Run Code Online (Sandbox Code Playgroud)如何使用Rest Assured在GET URL中传递查询字符串参数?
网址是: http://example.com/building
我的查询字符串是:
globalDates:{"startMs":1473672973818,"endMs":1481448973817,"period":90}
limitTo:6
loadTvData:true
startFrom:0
userId:5834fb36981baacb6a876427
Run Code Online (Sandbox Code Playgroud) api automated-tests restful-architecture rest-assured web-api-testing
rest ×5
web-services ×2
amazon-ec2 ×1
api ×1
asp.net ×1
c# ×1
file-io ×1
get ×1
http ×1
json ×1
rest-assured ×1
swagger ×1
swagger-ui ×1
wcf ×1