Dropwizard + Raml -> 空资源
Posted
技术标签:
【中文标题】Dropwizard + Raml -> 空资源【英文标题】:Dropwizard + Raml -> empty resource 【发布时间】:2016-01-25 17:36:30 【问题描述】:当我启动服务器时,有一个警告说我的资源是空的(导致 404):
WARN org.glassfish.jersey.internal.Errors - The following warnings have been detected: WARNING: A resource, Resource"helloz", 0 child resources, 0 resource methods, 0 sub-resource locator, 0 method handler classes, 0 method handler instances, with path "helloz" is empty. It has no resource (or sub resource) methods neither sub resource locators defined.
拉姆尔:
#%RAML 0.8
---
title: API
version: 0.1
mediaType: application/json
baseUri: "apiRoot/api"
baseUriParameters:
apiRoot:
description: Set the root of the service here
example: http://localhost:9090
schemas:
- common: !include common-schema.json
- hello-schema: |
"$schema": "http://json-schama.org/draft-03/schema",
"type": "object",
"description": "A Hello World Schema",
"properties":
"times": "type": "number"
- meta-error: |
"$schema": "http://json-schama.org/draft-03/schema",
"type": "object",
"description": "A generic error response for the API",
"properties":
"message": "type": "string" ,
"details": "type": "array",
"items": "type": "string"
traits:
- secured:
usage: Apply this to any method that needs to be secured
description: Some requests require authentication.
queryParameters:
access_token:
description: Access Token
type: string
example: ACCESS_TOKEN
# required: true
/helloz:
is: [ secured ]
post:
description: Just say hello
body:
application/json:
schema: hello-schema
example: !include examples/empty.json
responses:
200:
body:
application/json:
schema: hello-schema
400:
description: A malformed input message
body:
application/json:
schema: meta-error
实施:
public class SayHello implements Helloz
@Override
public PostHellozResponse postHelloz(@QueryParam("access_token") String accessToken, HelloSchema entity) throws Exception
System.out.println("Hello World!");
return PostHellozResponse.withJsonOK(null);
在 Application#run 中,我只需执行以下操作:environment.jersey().register(SayHello.class);
【问题讨论】:
【参考方案1】:好的,这并不明显 - 您需要删除实现类中的注释:
错误
public class SayHello implements Helloz
@Override
public PostHellozResponse postHelloz(@QueryParam("access_token") String accessToken, HelloSchema entity) throws Exception
System.out.println("Hello World!");
return PostHellozResponse.withJsonOK(null);
正确:
public class SayHello implements Helloz
@Override
public PostHellozResponse postHelloz(String accessToken, HelloSchema entity) throws Exception
System.out.println("Hello World!");
return PostHellozResponse.withJsonOK(null);
【讨论】:
以上是关于Dropwizard + Raml -> 空资源的主要内容,如果未能解决你的问题,请参考以下文章
@Context 注入在 Jersey ContainerRequestFilter (Dropwizard) 中不起作用