REST API 相关内容

构建 REST API

需要使用的 crate

  • serde
    • 序列化和反序列化
  • chrono
    • 时间相关的处理
    • Date and time library for Rust

构建内容

  • POST: /courses
    • 获取所有课程信息
  • GET: /courses/teacher_id
    • 获取老师教的所有课程
  • GET: /courses/teacher_id/course_id
    • 或者指定课程的详细信息

相关文件

  • bin/teacher-service.rs
  • models.rs
  • state.rs
    • 应用程序的状态
    • 一般情况下都存在数据库中,这里例子中放在内存中。
  • routers.rs
  • handlers.rs

Rust 代码中,部分类型构建参数时,会使用 (T) 的形式,看起来没有必要,同时在当前编译器中会给出警告,

  • 这里我理解就是为了利用 rust 的自动提取的特性,将包装类中的类型直接提取出来使用。
1
2
3
4
5
// 参数定义中:
app_state: web::Data<AppState>,

// 实际使用中:
app_state.courses // 这里直接将 app_state 当做 AppState 类型来使用。

如何定义单个元素的元组?

  • 解:(usize,) 在单个类型后面添加一个 , 逗号。
  • 否则,rust 编译器会认为 usize 两边的括号是多余的,会告警建议去掉括号,即不定义为元组。

Web Service 中的错误处理

Actix Web Servicve 中设置了统一的错误处理

将不同类型的错误,数据库错误,serde错误,I/O错误,用户非法输入错误等

编程语言常用的两种错误处理方式:

  • 异常(Java、C#等)
  • 返回值(Rust 、go 等)
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2023 ligongzhao
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信