当前位置: 首页 > news >正文

.asp 网站中学生网站源码

.asp 网站,中学生网站源码,厦门网站seo,线上推广是什么工作RESTful 简介 1.1 为什么要使用 RESTful 架构#xff1f; Representational State Transfer#xff08;REST#xff09;是一种面向资源的架构风格#xff0c;广泛应用于网络服务的设计和开发。使用RESTful架构有以下几个优点#xff1a; 简单性和可扩展性#xff1a; RE…RESTful 简介 1.1 为什么要使用 RESTful 架构 Representational State TransferREST是一种面向资源的架构风格广泛应用于网络服务的设计和开发。使用RESTful架构有以下几个优点 简单性和可扩展性 RESTful 架构基于简单的原则和标准易于理解和实现。它的设计使得系统更具有可扩展性便于适应不断变化的需求。 松耦合 RESTful 架构支持松耦合客户端和服务器之间的交互是无状态的每个请求都包含足够的信息使其独立完成。这促使系统组件之间的独立性使得修改一个组件不会影响其他组件。 可见性 RESTful 架构通过使用统一的接口使得资源的状态和操作对客户端可见。这提高了系统的可维护性和可理解性。 1.2 RESTful API 请求设计 设计 RESTful API 请求时应考虑以下几个方面 资源标识 每个资源都应有唯一的标识通常通过 URIUniform Resource Identifier表示。URI应该清晰地指示资源的位置和唯一性。 HTTP 方法 使用 HTTP 方法GET、POST、PUT、DELETE 等来表示对资源的不同操作。例如GET用于获取资源POST用于创建资源PUT用于更新资源DELETE用于删除资源。 请求参数 可以通过 URI 查询参数、请求头或请求体传递参数。参数的设计应符合标准易于理解和使用。 1.3 RESTful API 响应设计 设计 RESTful API 响应时需要考虑以下几个方面 状态码 使用合适的 HTTP 状态码来表示请求的结果如200 OK表示成功404 Not Found表示资源未找到等等。 响应体 响应体应包含所请求资源的表示形式通常使用 JSON 或 XML 格式。这使得数据在客户端和服务器之间的传输更加灵活和可扩展。 超媒体 使用超媒体作为应用程序状态的引擎使得客户端可以通过解析响应中的超媒体链接来发现和使用相关资源。 通过合理设计 RESTful API 请求和响应可以构建出清晰、可维护、可扩展的系统实现客户端和服务器之间的有效通信。 Flask例子 __init__.py from flask import Flask from .extensions import api, db from .resources import nsdef create_app():app Flask(__name__)app.config[SQLALCHEMY_DATABASE_URI] sqlite:///db.sqlite3api.init_app(app)db.init_app(app)api.add_namespace(ns)return app api_models.py # 导入 Flask-Restx 框架的 fields 模块 from flask_restx import fields# 从自定义的 extensions 模块中导入 api 对象 from .extensions import api# 定义一个名为 Student 的模型包含 id整数、name字符串和一个嵌套的 course_model 字段 student_model api.model(Student, {id: fields.Integer, # 学生 ID类型为整数name: fields.String, # 学生名称类型为字符串#course: fields.Nested(course_model) # 嵌套的课程模型字段该行代码被注释掉了 })# 定义一个名为 Course 的模型包含 id整数、name字符串和一个嵌套的 students 字段是一个学生列表 course_model api.model(Course, {id: fields.Integer, # 课程 ID类型为整数name: fields.String, # 课程名称类型为字符串students: fields.List(fields.Nested(student_model)) # 嵌套的学生列表字段 })# 定义一个名为 CourseInput 的模型用于接收创建课程时的输入数据 course_input_model api.model(CourseInput, {name: fields.String, # 课程名称类型为字符串 })# 定义一个名为 StudentInput 的模型用于接收创建学生时的输入数据 student_input_model api.model(StudentInput, {name: fields.String, # 学生名称类型为字符串course_id: fields.Integer # 所属课程的 ID类型为整数 })extensions.py from flask_sqlalchemy import SQLAlchemy from flask_restx import Apiapi Api() db SQLAlchemy() models.py from .extensions import db class Course(db.Model):id db.Column(db.Integer, primary_keyTrue)name db.Column(db.String(50), uniqueTrue)students db.relationship(Student, back_populatescourse)class Student(db.Model):id db.Column(db.Integer, primary_keyTrue)name db.Column(db.String(50), uniqueTrue)course_id db.Column(db.ForeignKey(course.id))course db.relationship(Course, back_populatesstudents) resources.py # 导入 Flask-Restx 框架的 Resource 类和 Namespace 类 from flask_restx import Resource, Namespace # 导入自定义的 API 模型和数据库模型 from .api_models import course_model, student_model, course_input_model, student_input_model from .extensions import db from .models import Course, Student# 创建一个命名空间对象用于组织和管理 API 路由 ns Namespace(api)# 创建一个处理 /hello 路由的 Resource 类 ns.route(/hello) class Hello(Resource):def get(self):return {hello: restx}# 创建处理 /courses 路由的 Resource 类 ns.route(/courses) class CourseListAPI(Resource):# 使用 course_model 进行响应数据的序列化ns.marshal_list_with(course_model)def get(self):# 返回所有课程的查询结果return Course.query.all()# 使用 course_input_model 进行请求数据的验证# 使用 course_model 进行响应数据的序列化ns.expect(course_input_model)ns.marshal_with(course_model)def post(self):# 从请求中获取课程名称并创建新的课程对象course Course(namens.payload[name])# 将新课程对象添加到数据库中db.session.add(course)# 提交数据库事务db.session.commit()# 返回创建的课程对象和状态码 201表示资源创建成功return course, 201# 创建处理 /courses/int:id 路由的 Resource 类 ns.route(/courses/int:id) class CourseAPI(Resource):# 使用 course_model 进行响应数据的序列化def get(self, id):# 根据课程 ID 查询并返回相应的课程对象course Course.query.get(id)return course# 使用 course_input_model 进行请求数据的验证# 使用 course_model 进行响应数据的序列化def put(self, id):# 根据课程 ID 查询相应的课程对象course Course.query.get(id)# 更新课程对象的名称course.name ns.payload[name]# 提交数据库事务db.session.commit()# 返回更新后的课程对象return course# 删除指定 ID 的课程对象def delete(self, id):course Course.query.get(id)db.session.delete(course)db.session.commit()# 返回空响应体和状态码 204表示资源删除成功return {}, 204# 创建处理 /students 路由的 Resource 类 ns.route(/students) class StudentListAPI(Resource):# 使用 student_model 进行响应数据的序列化def get(self):# 返回所有学生的查询结果return Student.query.all()# 使用 student_input_model 进行请求数据的验证# 使用 student_model 进行响应数据的序列化def post(self):# 从请求中获取学生名称和所属课程 ID并创建新的学生对象student Student(namens.payload[name], course_idns.payload[course_id])# 将新学生对象添加到数据库中db.session.add(student)# 提交数据库事务db.session.commit()# 返回创建的学生对象和状态码 201表示资源创建成功return student, 201# 创建处理 /students/int:id 路由的 Resource 类 ns.route(/students/int:id) class StudentAPI(Resource):# 使用 student_model 进行响应数据的序列化def get(self, id):# 根据学生 ID 查询并返回相应的学生对象student Student.query.get(id)return student# 使用 student_input_model 进行请求数据的验证# 使用 student_model 进行响应数据的序列化def put(self, id):# 根据学生 ID 查询相应的学生对象student Student.query.get(id)# 更新学生对象的名称和所属课程 IDstudent.name ns.payload[name]student.course_id ns.payload[course_id]# 提交数据库事务db.session.commit()# 返回更新后的学生对象return student# 删除指定 ID 的学生对象def delete(self, id):student Student.query.get(id)db.session.delete(student)db.session.commit()# 返回空响应体和状态码 204表示资源删除成功return {}, 204
http://www.hkea.cn/news/14384570/

相关文章:

  • 专业建设网站外包做视频网站需要什么证件
  • 保定免费网站建站模板广东民航机场建设有限公司网站
  • 网站怎么才能吸引人百度怎样可以搜到自己的网站
  • vs做网站开发吗北京网站建设 shwl
  • 网站集约化建设规范商务网站建设简答题及答案
  • 公众出行服务网站建设wordpress取自定义字段
  • 张家口住房和城乡建设厅网站廊坊哪里做网站
  • 网站开发维护计入什么费用软件开发包含网站开发吗
  • 网站主页 优帮云传奇网站建设
  • 网站 中文版与英文版的后台有什么不同网站开发和设计实训
  • 替人做赌彩网站被判刑网站开发公司怎么查
  • 注册了网站之后怎么设计做网站都要掌握什么软件
  • 免费做网站空间wordpress手机端适配
  • 怎么建设QQ网站电子商务网站建设课程性质
  • 中企动力做的网站被百度屏蔽长沙如何优化排名
  • 寿光专业做网站百色建设厅网站
  • 做珠宝首饰网站深圳网站定制公司
  • 郑州做音响网站的公司把网站扒下来以后怎么做
  • 怎么让网站页面自适应利用淘宝联盟做网站
  • 网站的类型和特色虚拟展馆官方网站建设
  • 品牌网站开发设计wordpress后台默认登录地址
  • 网站架构图一般包括什么做网站在经营范围内属于什么
  • 做微商货源网站赚钱吗wordpress 内容管理系统
  • 手机个人网站制作教程秦皇岛在建工程项目
  • 国外网站 模板画册设计印刷
  • 接做网站需要问什么条件wordpress 联系表单
  • 增长超人网站建设价格番禺网站开发公司电话
  • 网站建设及推广枣强台州网站建设制作
  • 食品网站app建设软件项目过程
  • 中国旅游电子商务网站建设情况怎样将自己做的网页加入网站