编程接口

应用开发者可以很方便地使用hi-nginx提供的编程接口完成开发工作。

相对于不同的编程语言,编程接口的实现略有不同,但是总体上非常简易,使用的是特定语言的基本数据结构和方法,而且已经完全概念化。开发者只需了解http协议的基本概念即可轻松开发出高性能的web应用。

cpp 接口

cpp接口基于STL实现,非常容易操作,不多说了。如果还不熟悉STL,赶紧看下;主要是std::string,std::unordered_map<std::string, std::string>std::unordered_multimap<std::string, std::string>。是不是太简单?

具体实现参考hi-nginx安装目录下的include

java,javascript以及jsr-223 JVM language 接口

java接口也非常简单,包括String,HashMap<String, String>HashMap<String, ArrayList<String>>。没什么好说的。

具体实现参考hi-nginx-java

python,lua 和 duktape 接口

这两种语言的接口符号名是一致的:

hi_reqhi_res是两个嵌入的对象实例,由hi-nginx管理其生命期。它们提供统一的方法来操控http协议:

hi_req

  • uri
  • method
  • client
  • param
  • user_agent
  • has_header
  • get_header
  • has_form
  • get_form
  • has_session
  • get_session
  • has_cookie
  • get_cookie
  • has_cache
  • get_cache

hi_res

  • status
  • content
  • header
  • session
  • cache
    因为python(以及duktape)和lua使用对象方法的语法略有差异,前者使用.,后者使用:,所以在python中写
  1. hi_res.status(200)
  2. hi_res.content("hello,world")

在lua中则要写作:

  1. hi_res:status(200)
  2. hi_res:content("hello,world")

php 接口

php有神奇的array类型,所以,除了字符串,一切都是它了。

具体实现参考hi-nginx安装目录下的php/hi

附注

  • 对于php使用者,强烈推荐采用引入hi/route.php并采用单一入口模式。
  • 对于python使用者,不强烈推荐采用hi.py框架,它实现单一入口模式,并提供一个类似flask或bottle的迷你框架,但比两者都要快。但是还是比不用该框架慢很多。python就是这样啦:又好又慢!
    hi-nginx-demo提供各种语言的演示开发方法,敬请参考。

原文: https://doc.hi-nginx.com/00/0007.html