Django 官网 有详细的使用说明,这里只做简单记录。
Java 项目用到了 Python 的类库,使用jython-standalone
在 idea 里可以调用,但是部署时模块无法找到,所以萌生了用 Python 搭建算法中心的想法。
[root@aliyun ~]# python3
Python 3.6.8 (default, Nov 21 2019, 19:31:34)
[GCC 8.3.1 20190507 (Red Hat 8.3.1-4)] on linux
[root@aliyun ~]# pip3 -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
命令行里的 project_name 和 application_name
根据项目实际需求进行自定义。
# 1. 安装 Django
pip3 install Django==3.2.12
# 2. 创建项目 Project
django-admin startproject project_name
# 3. 创建应用 Application {project_name 目录下}
python3 manage.py startapp application_name
# 4. 启动项目
python3 manage.py runserver host:port
# 5. 访问应用
# host:port/application_name
由内 application
而外 project
进行文件的修改,首先修改 application_name
目录下的文件:
:one: urls.py
添加接口请求路径
urlpatterns = [
path('', views.index, name='index'),
# 添加接口请求路径
path('guessGenderByName', views.guess_gender_by_name, name='guess_gender_by_name'),
]
:two: views.py
添加接口方法实现
@csrf_exempt
def guess_gender_by_name(request):
req = json.loads(request.body.decode())
flag_ = req['flag']
res = ngender.guess(req['name'])
if flag_ == 0 or flag_ == 1:
res = res[flag_]
else:
res = ','.join(str(item) for item in res)
return HttpResponse(res)
修改 project_name
目录下的文件:
:one: settings.py
添加允许的主机 host,否则报错:Invalid HTTP_HOST header: 'hostName:8087'. You may need to add 'hostName' to ALLOWED_HOSTS.
# 仅添加部署服务器的IP即可
ALLOWED_HOSTS = ['hostName']
# 也可以放行所有
ALLOWED_HOSTS = ['*']
:two: urls.py
将应用 application_name
的请求路径添加到项目project_name
内
urlpatterns = [
path('application_name/', include('application_name.urls')),
path('admin/', admin.site.urls),
]
接口的完整路径为host:port/application_name/guessGenderByName
以下是 Java 通过 FeignClient 调用算法中心 guessGenderByName 方法代码:
// 请求对象封装
@Data
@ApiModel(value = "通过姓名获取性别信息请求对象", description = "通过姓名获取性别信息请求对象封装")
@Builder
public class GuessGenderServiceReq {
private String name;
private int flag;
}
// Feign接口调用
@FeignClient(name = "AlgorithmCenterInterface", url = "${algorithm-center-service.url}:${algorithm-center-service.port}")
public interface RemoteAlgorithmCenterService {
/**
* 根据姓名获取性别及姓名男性化女性化程度
*
* @param req 中文姓名 和 flag 0 gender 1 prob other is all
* @return 性别及可能性
*/
@PostMapping("/application_name/guessGenderByName")
String guessGenderByName(GuessGenderServiceReq req);
}
// 调用方法
algorithmCenterService.guessGenderByName(GuessGenderServiceReq.builder().name(name).flag(0).build());
使用 Postman 调用接口测试结果:
仅作简单起步。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。