1. 程式人生 > 實用技巧 >postman測試介面

postman測試介面

postman測試介面

1.1 測試登入介面,獲取token

http://192.168.56.100:8888/user/login/

'''自定義認證和許可權優先順序更高,可以覆蓋settings.py中的 ''' 
# 自定義許可權類 
permission_classes = (MyPermission,) 
# 自定義認證類, 自定義會覆蓋全域性配置 
authentication_classes =(JSONWebTokenAuthentication,)

 1.2 使用獲得的token獲取所有使用者資訊

http://192.168.56.100:8888/user/user/

 

2.原始碼分析

class JSONWebTokenAPIView(APIView): 
	""" Base API View that various JWT interactions inherit from. 
	""" 
	permission_classes = () 
	authentication_classes = () 
	
	def get_serializer_context(self): 
		""" Extra context provided to the serializer class. 
		""" 
		return {
		'request': self.request, 
		'view': self, 
		} 
	def get_serializer_class(self): 
		""" 
		Return the class to use for the serializer. 
		Defaults to using `self.serializer_class`. 
		You may want to override this if you need to provide different 
		serializations depending on the incoming request. 
		(Eg. admins get full serialization, others get basic serialization) 
		""" 
		assert self.serializer_class is not None, ( 
			"'%s' should either include a `serializer_class` attribute, " 
			"or override the `get_serializer_class()` method." 
			% self.__class__.__name__) 
		return self.serializer_class 
	def get_serializer(self, *args, **kwargs): 
		""" 
		Return the serializer instance that should be used for validating and 
		deserializing input, and for serializing output. 
		""" 
		serializer_class = self.get_serializer_class() 
		kwargs['context'] = self.get_serializer_context() 
		return serializer_class(*args, **kwargs) 
	def post(self, request, *args, **kwargs): 
		serializer = self.get_serializer(data=request.data) 
		if serializer.is_valid(): 
			user = serializer.object.get('user') or request.user # User表物件 
			token = serializer.object.get('token') # 獲取到生成的 token 
			response_data = jwt_response_payload_handler(token, user, request) 
			response = Response(response_data) 
			if api_settings.JWT_AUTH_COOKIE: 
			expiration = (datetime.utcnow() + 
						  api_settings.JWT_EXPIRATION_DELTA) 
			response.set_cookie(api_settings.JWT_AUTH_COOKIE, 
								token, 
								expires=expiration, 
								httponly=True) 
			return response 
		return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)