微信小程序lianc++后台

本文介绍了如何在微信小程序中实现C++后台处理HTTP请求。通过修改request_parser.hpp文件并自定义request_handler类的客户端请求处理函数,实现了对官方示例的扩展。
摘要由CSDN通过智能技术生成

贴上微信小程序发送http请求代码:

 onsend: function(){    
    wx.request({
       url: 'http://127.0.0.1:1000', //c++后台ip、端口
       data: {
           x: '1' , //发送到后台字段
           y: '2'
  },
  header:{
      "Content-Type":"application/json"
  },
  method:"POST", //发送POST,若为GET则改为GET
  success: function(res) {
     var data = res.data;
     console.log(data);
  }
  });
  }

c++后台代码借鉴boost官网的asio的http server 3地址并自己做了修改:

官网地址:http://www.boost.org/doc/libs/1_38_0/doc/html/boost_asio/examples.html

修改代码:

1、request_parser.hpp:

//
// request_parser.hpp
// ~~~~~~~~~~~~~~~~~~
//
// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//

#ifndef HTTP_SERVER3_REQUEST_PARSER_HPP
#define HTTP_SERVER3_REQUEST_PARSER_HPP

#include <boost/logic/tribool.hpp>
#include <boost/tuple/tuple.hpp>

namespace http {
namespace server3 {

struct request;

/// Parser for incoming requests.
class request_parser
{
public:
  /// Construct ready to parse the request method.
  request_parser();

  /// Reset to initial parser state.
  void reset();

  /// Parse some data. The tribool return value is true when a complete request
  /// has been parsed, false if the data is invalid, indeterminate when more
  /// data is required. The InputIterator return value indicates how much of the
  /// input has been consumed.
  template <typename InputIterator>
  boost::tuple<boost::tribool, InputIterator> parse(request& req,
      InputIterator begin, InputIterator end)
  {
    if(req.method=="POST") state_ = expecting_newline_4; //自己增加针对post请求数据一次性接收不完问题
    while (begin != end)
    {
      boost::tribool result = consume(req, *begin++);
	  
	  if (state_ != none && (result || !result)){ //针对post请求做特殊处理

		   if(req.method=="POST"){
			   char c = *begin;
			   if(c=='\0') break;
			 state_ = expecting_newline_4;
		     result = consume(req, *begin++);
	       }  
		 
	  }
      if (result || !result){
		    return boost::make_tuple(result, begin);
	   }
    }
    boost::tribool result = boost::indeterminate;
    return boost::make_tuple(result, begin);
  }

private:
  /// Handle the next character of input.
  boost::tribool consume(request& req, char input);

  /// Check if a byte is an HTTP character.
  static bool is_char(int c);

  /// Check if a byte is an HTTP control character.
  static bool is_ctl(int c);

  /// Check if a byte is defined as an HTTP tspecial character.
  static bool is_tspecial(int c);

  /// Check if a byte is a digit.
  static bool is_digit(int c);

  /// The current state of the parser.
  enum state
  {
    method_start,
    method,
    uri_start,
    uri,
    http_version_h,
    http_version_t_1,
    http_versio
WESHOP | 基于微服务的小程序商城系统 --- Weshop是基于Spring Cloud(Greenwich)开发的小程序商城系统,提供整套公共微服务服务模块,包含用户中心、商品中心、订单中心、营销中心四大基础服务模块,微信端、管理平台两大聚合服务模块,支持服务治理、监控和追踪等功能。 ## 组织结构 ``` weshop ├── weshop-framework -- 框架公共模块 ├── weshop-eureka-server -- eureka注册中心[端口:8761] ├── weshop-config-server -- 配置中心[端口:7001] ├── weshop-api-gateway -- api网关[端口:8020] ├── weshop-hystrix-dashboard -- 断路器监控面板[端口:1301] ├── weshop-example -- 项目示例工程 | ├── weshop-example-api -- 远程服务api接口 | ├── weshop-example-provider -- 服务提供方[端口:9998] | ├── weshop-example-consumer -- 服务消费方[端口:9999] ├── weshop-user-api -- 用户中心api ├── weshop-user -- 用户中心基础服务[端口:8021] ├── weshop-goods-api -- 商品中心api ├── weshop-goods -- 商品中心基础服务[端口:8022] ├── weshop-marketing-api -- 营销中心api ├── weshop-marketing -- 营销中心基础服务[端口:8023] ├── weshop-order-api -- 订单中心api ├── weshop-order -- 订单中心基础服务[端口:8024] ├── weshop-storage-api -- 对象存储服务api ├── weshop-storage -- 对象存储服务[端口:8026] ├── weshop-wechat -- 微信端聚合服务[端口:8025] ├── weshop-wechat-ui -- 微信小程序页面 ├── weshop-admin -- 管理平台聚合服务[端口:8027] ├── weshop-admin-ui -- 管理平台页面 ``` ### 后端技术 技术 | 名称 | 版本 | 官网 ----|------|----|---- Spring Boot | 应用框架 | 2.1.2.RELEASE | [https://projects.spring.io/spring-boot/](https://projects.spring.io/spring-boot/) spring-cloud-netflix | 微服务框架 | Greenwich.RELEASE | [https://projects.spring.io/spring-cloud/](https://projects.spring.io/spring-boot/) spring-cloud-config | 分布式配置中心 | 2.1.2.RELEASE | [https://projects.spring.io/spring-cloud/](https://projects.spring.io/spring-boot/) spring-cloud-sleuth | 分布式服务跟踪 | 2.1.2.RELEASE | [https://projects.spring.io/spring-cloud/](https://projects.spring.io/spring-boot/) spring-cloud-stream | 分布式消息总线 | 2.1.2.RELEASE | [https://projects.spring.io/spring-cloud/](https://projects.spring.io/spring-boot/) MyBatis | ORM框架 | 3.2.1 | [http://www.mybatis.org/mybatis-3/zh/index.html](http://www.mybatis.org/mybatis-3/zh/index.html) Mapper | MyBatis 通用 Mapper4 | 4.0.0 | [https://gitee.com/free/Mapper](https://gitee.com/free/Mapper) PageHelper | MyBatis 分页插件 | 5.1.2 | [https://gitee.com/free/Mybatis_PageHelper](https://gitee.com/free/Mybatis_PageHelper) MyBatis Generator | 代码生成 | 1.3.5 | [http://www.mybatis.org/generator/index.html](http://www.mybatis.org/generator/index.html) Swagger2 | 在线Api文档 | 2.9.2 | [https://swagger.io/](https://swagger.io/) Thymeleaf | 模板引擎 | 3.0.9.RELEASE | [https://www.thymeleaf.org/](https://www.thymeleaf.org/) Logback | 日志组件 | 1.1.3 | [https://logback.qos.ch](https://logback.qos.ch/) Druid | 数据库连接池 | 0.2.23 | [https://github.com/alibaba/druid](https://github.com/alibaba/druid) Hibernate Validator | 后端校验框架 | 5.4.2.Final | [http://hibernate.org/validator/](http://hibernate.org/validator/) RabbitMQ | 消息中间件 | 5.4.3 | [http://www.rabbitmq.com/](http://www.rabbitmq.com/) ### 前端技术 技术 | 名称 | 版本 | 官网 ----|------|----|---- React | 前端MVC框架 | 16.5.1 | [https://reactjs.org/](https://reactjs.org/) Ant Design Pro | 开箱即用的中台前端/设计解决方案 | 2.1.0 | [https://pro.ant.design/index-cn](https://pro.ant.design/index-cn) ### 软件需求 - JDK1.8+ - MySQL5.6+ - RabbitMQ 3.6.x+ - Maven3.0+ - ZipKinServer 3.7.0+ ## 功能 ### 商城功能 - 首页 - 专题列表、专题详情 - 分类列表、分类详情 - 品牌列表、品牌详情 - 新品首发、人气推荐 - 团购 - 搜索 - 商品详情、商品评价、商品分享 - 购物车 - 下单 - 订单列表、订单详情 - 地址、收藏、足迹、意见反馈 - 客服 ### 管理平台功能 - 会员管理 - 商城管理 - 商品管理 - 推广管理 - 系统管理 ### 在线演示 。。。 ### 预览图 > 服务注册页面 ![](docs/preview/eureka.JPG) > swagger ![](docs/preview/swagger.gif) > 首页 ![](docs/preview/index.gif) > 商品页 ![](docs/preview/detail.gif) > 购物车页 ![](docs/preview/orderlist.JPG) ## 安装教程 ### 本地部署 1. 通过git下载源码 2. 创建数据库weshop,数据库编码为UTF-8 3. 执行docs/sql/data.sql文件,初始化数据 4. 修改配置中心(weshop-config-server)的database.properties和common.properties文件,更新MySQL账号和密码,更新RabbitMQ配置,更新zipkinServer配置 5. 运行Maven命令mvn install(注意:安装weshop-admin模块因为会运行npm install和npm build命令时间会比较长,当然也可以手动在weshop-admin模块执行npm命令) 6. 安装weshop-admin-ui模块,运行mvn install和mvn build命令,运行命令前需要安装nodeJs 7. 运行weshop-eureka-server、weshop-config-server、weshop-api-gateway这几个基础服务 8. 运行weshop-user、weshop-goods、weshop-order、weshop-marketing这几个api服务 9. 运行weshop-wechat、wechat-admin这几个endpoint 10. http://localhost:8027/index.html访问后台管理,http://localhost:8020/weshop/swagger-ui.html访问Swagger页面 11. 打开微信开发者工具,导入weshop-wechat-ui模块,点击编译即可,此时可以预览商城效果 ### 生产部署 最低部署要求 1C2G x3
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值