我使用的是jaxrs:0.10,我有一个域OrderDetails
的默认生成资源。客户端将POST
json包含域OrderDetails
对象以及其他两个参数userName
和password
,以便只有经过身份验证的用户才会使用该资源。我只需通过发布JSON就可以直接保存到域OrderDetails
的数据库,而无需验证(即JSON与域相同。)但是通过添加其他两个参数进行身份验证有点不同。如何完成这项任务,我的需求是:
1)客户端使用userName,password和OrderDetails
对象发布json。
2)我需要验证OrderDetails
对象的用户凭据以保存到数据库。
暂时用户凭据将是静态的。
我的域OrderDetails
代码是:
class OrderDetails {
Date orderDate
Long orderNumber
Float subTotal
Float shipping
Float discount
Float netTotalPaid
boolean creditApplied
Long transactionId
String specialInstruction
DeliveryStatus deliveryStatus
Long memberId
String localOffice
static constraints = {
orderDate nullable: true
orderNumber nullable: true
subTotal nullable: true
shipping nullable: true
discount nullable: true
netTotalPaid nullable: true
creditApplied nullable: true
transactionId nullable: true
specialInstruction nullable: true
deliveryStatus nullable: true
memberId nullable: true
localOffice nullable: true
}
}
生成的资源是:
@Path('/api/v1/orderDetails')
@Consumes(['application/json'])
@Produces(['application/json'])
class OrderDetailsCollectionResource {
def orderDetailsResourceService
@POST
Response create(OrderDetails dto) {
created orderDetailsResourceService.create(dto)
}
@GET
Response readAll() {
ok orderDetailsResourceService.readAll()
}
@Path('/{id}')
OrderDetailsResource getResource(@PathParam('id') Long id) {
new OrderDetailsResource(orderDetailsResourceService: orderDetailsResourceService, id:id)
}
}
并且:
@Consumes(['application/json'])
@Produces(['application/json'])
class OrderDetailsResource {
def orderDetailsResourceService
def id
@GET
Response read() {
ok orderDetailsResourceService.read(id)
}
@PUT
Response update(OrderDetails dto) {
dto.id = id
ok orderDetailsResourceService.update(dto)
}
@DELETE
void delete() {
orderDetailsResourceService.delete(id)
}
}
答案 0 :(得分:0)
你的包装:
<div class="intro">
<div class="intro_container">
<p id="hello", class="center">Content </p>
<p id="wonder", class="center">Content</p>
<p id="mystery", class="center">Content</p>
</div>
</div>
<div class="main">
<div class="main_container">
<p>Content</p>
</div>
<div class="list" id="left">
<div class="list_container">
<ul>
<li>MenuItem</li>
<li>MenuItem</li>
<li>MenuItem</li>
</ul>
</div>
</div>
<div class="main_content" id="right">
<div class="main_content_container">
<h2>title</h2>
<p>Some content</p><br>
<a href="test_article1.html">Read more!</a>
</div>
</div>
<div class="img_header" id="left">
<div class="img_header_container">
<h3>Title</h3>
<div class="picture">
<a href="http://example.com" target="_blank"><img src="" id="img1"></a>
<a href="http://example.com" target="_blank"><img src="" id="img1"></a>
<a href="http://example.com" target="_blank"><img src="" id="img1"></a>
<a href="http://example.com" target="_blank"><img src="" id="img1"></a>
</div>
</div>
</div>
<div class="religion" id="right">
<div class="religion_container">
<h2>Title</h2>
<p>Some content</p><br>
<a href="">Read more!</a>
</div>
</div>
现在您需要一个AuthOrder-Json-Object而不是OrderDetails。在您的GET / PUT / DELETE-Operations中,您可以读取用户和密码,并检查是否允许它完成工作。然后传递OrderDetails-Object。
对于json-rest-authentication,我建议您阅读how-do-people-handle-authentication-for-restful-apis-technology-agnostic
编辑:@PUT的示例;
class AuthOrder {
OrderDetails orderDetails;
Token userToken;
Password password;
}