我正在尝试创建一个自定义API(不使用模型),但是它没有在架构中显示请求定义(因此,没有大张旗鼓地显示它)。我当前的代码是:
views.py
class InfoViewSet(viewsets.ViewSet):
@list_route(methods=['POST'])
def some_method(self, request):
data = JSONParser().parse(request)
serializer = GetInfoSerializer(data=data)
serializer.is_valid(raise_exception=True)
info = get_data_from_elsewhere(serializer.data)
return Response(info)
Run Code Online (Sandbox Code Playgroud)
urls.py
router.register(r'^info', InfoViewSet, base_name='info')
Run Code Online (Sandbox Code Playgroud)
serializers.py
class InfoSomeMethodSerializer(serializers.Serializer):
list_id = serializers.ListField(child=serializers.IntegerField())
password = serializers.CharField()
Run Code Online (Sandbox Code Playgroud)
它显得有些招摇,但只是响应部分。如何注册发布参数?我也不确定我是否正确使用了DRF(我是新手),所以任何纠正都将不胜感激。
-
编辑:我尝试了Linovia建议的serializer_class参数,但是没有用,我得到了:
TypeError:InfoViewSet()收到无效的关键字“ serializer_class”
我尝试了覆盖get_serializer_class方法,但也没有用:
def get_serializer_class(self):
if self.action == 'some_method':
return InfoSomeMethodSerializer
Run Code Online (Sandbox Code Playgroud) 我是一个完整的菜鸟,我试图了解如何在Rails中使用javascript和资产管道.例如,我在哪里放一个简单的$(document).ready来在特定视图中执行.我已经完成了将代码放在视图中,但我认为这不是最好的方法.补充阅读也将不胜感激,谢谢.
我想将我在过滤器中用于身份验证的用户对象传递给资源。是否可以?
我正在使用wildfly 10(resteasy 3)
@Secured
@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {
@Inject
private UserDao userDao;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
logger.warn("Filter");
String uid = requestContext.getHeaderString("Authorization");
User user;
if((user = validateUser(uid)) == null) {
requestContext.abortWith(
Response.status(Response.Status.UNAUTHORIZED).build());
}
}
private User validateUser(String uid) {
return userDao.getById(uid);
}
}
Run Code Online (Sandbox Code Playgroud)