精华内容
下载资源
问答
  • 现在项目开发都是前后端分离,该代码主要是教初学者使用springboot开发接口,其中包括数据返回的包装类,自定义异常,返回码的枚举等,并进行简单的测试,达到抛砖引玉的作用,初学者能更容易地接受,共同进步.
  • 使用express快速开发后端接口 项目使用pm2部署在nginx服务器上。可以实现json文件接口化处理。 express + 项目名 yarn 装依赖 Scripts node改nodemon /app.js var mockRouter = require('./routes/mock'); app.use...
  • Flask写后端接口

    2021-01-29 16:12:46
    往期直达:为什么选择Flask,因为接下来要更新深度学习的相关技能了,用到的是python,为了给前端提供api,选择了python的Flask来开发web应用的后端服务,Nodejs不够了哈。01安装Flask确保已经安装过python,可以...

    此篇为

    全栈技能系列

    的第13篇。

    往期直达:

    为什么选择Flask,因为接下来要更新深度学习的相关技能了,用到的是python,为了给前端提供api,选择了python的Flask来开发web应用的后端服务,Nodejs不够用了哈。

    01

    安装Flask

    确保已经安装过python,可以用终端输入:

    python --version

    查看python安装与否及其版本,接下来在终端中输入:

    pip install flask

    安装Flask。

    02

    运行最简单的后端服务

    在本机中新建一个学习用的文件夹,然后新建一个app.py文件,输入from flask import Flask

    app = Flask(__name__)

    @app.route('/')

    def hello_world():

    return 'Hello World!'if __name__ == '__main__':

    app.run()

    启动app.py文件,终端输入:

    python app.py

    可以看到终端输出:

    * Running on http://127.0.0.1:5000/

    通过浏览器打开以上地址,即可看到hello world字样。

    恭喜你,已经跨入python的大门了,😄。

    03

    代码注解及自己动手修改例子:

    初学一种语言或者库,最好直接在本机成功运行官方或者最简单的例子,然后再逐渐的看懂每一句代码,然后再多尝试其他例子,逐渐地根据自己的想象,修改例子,不要急着去翻看繁杂的语言教程,或者库的api文档。

    注:上手一门新技术的最好方法

    以下部分适合要深入学习,理解python及flask的初学者,修改例子可以根据需要增加下面提到的一些内容进行尝试:

    from flask import Flask

    #导入 Flask 类

    app = Flask(__name__)

    '''

    创建一个该类的实例,第一个参数是应用模块或者包的名称。如果你使用单一的模块(如本例),你应该使用 __name__ ,因为模块的名称将会因其作为单独应用启动还是作为模块导入而有不同。

    '''

    app.debug = True

    #开启调试模式,根据需要设置。

    @app.route('/')

    def hello_world():

    return 'Hello World!'

    '''

    使用 route() 装饰器告诉 Flask 什么样 的URL 能触发我们的函数;这个函数的名字也在生成 URL 时被特定的函数采用,这个函数返回我们想 要显示在用户浏览器中的信息。

    '''

    @app.route('/hello')

    def hello():

    return 'Hello World'

    '''

    换个路径试试,浏览器输入http://127.0.0.1:5000/hello

    '''

    @app.route('/user/')

    def show_user_profile(username):

    # show the user profile for that user

    return 'User %s' % username

    @app.route('/post/')

    def show_post(post_id):

    # show the post with the given id, the id is an integer

    return 'Post %d' % post_id

    '''

    要给 URL 添加变量部分,你可以把这些特殊的字段标记为 ,这个部分将会作为命名参数传递到你的函数。规则可以用 指定一个可选的转换器,比如上面的username及post_id就是变量名,int表示为integer类型的变量。

    '''

    @app.route('/login', methods=['GET', 'POST'])

    def login():

    if request.method == 'POST':

    do_the_login()

    else:

    show_the_login_form()

    #HTTP 方法,可以根据需要设置

    if __name__ == '__main__':

    app.run(host='0.0.0.0',port=8888)

    '''

    用 run() 函数来让应用运行在本地服务器上。其中 if __name__ == '__main__':

    确保服务器只会在该脚本被 Python 解释器直接执行的时候才会运行,而不是作为模块导入的时候。

    host='0.0.0.0',让操作系统监听所有公网 IP,成为外部可访问的服务器。

    注意,如果是在docker使用,需要app.run中传入配置参数,让操作系统监听所有公网 IP,成为外部可访问的服务器,如

    app.run(host='0.0.0.0',port=8888)

    port是端口,可以修改为任意端口;

    若是docker使用,记得docker要把对应的端口映射到主机。

    docker是什么?暂时不清楚,可以留意后续的更新,或自行查阅。

    '''

    参考文章:

    http://docs.jinkan.org/docs/flask/quickstart.html#a-minimal-application

    以上为全文。

    展开全文
  • PHP后端接口怎么

    2021-03-23 14:14:16
    php后台接口的实现方法1. 首先,要设置一个入口文件入口文件的话会引入到固定的api文件(如下):

    8796906e868c06ac11cab84389dbcdfc.png

    php后台接口的实现方法

    1. 首先,要设置一个入口文件

    入口文件的话会引入到固定的api文件(如下):<?php

    define("APPAPI_ALLOW_REQUEST_LOGIN", 'Y');

    //是否允许传用户名密码参数的形式登录。如为Y则参数用户名密码参数和basic方式都可以,如为N就只能basic方式。

    //define("SITE_TEMPLATE_PATH", '/local/templates/mobile_app_api');

    //如不定义,默认是local/templates/bitrix24。可以考虑将/local/templates/mobile_app留给h5前端展示用。

    新开/local/templates/mobile_app_api给api用。如不指定SITE_TEMPLATE_PATH直接IncludeComponent,则对组件代码进行debug时,

    会出现web端头部页面。

    //require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php'); //需要模板页面

    Header('Access-Control-Allow-Origin: *');

    Header('Access-Control-Allow-Headers: origin, content-type, accept');

    Header('X-Content-Type-Options: nosniff');

    require("remote_auth.php");

    //app方式每次请求session_id()都会变,导致挂钩在session_id()下面的所有session信息如fix_session_id也都不认。

    所以登录完毕后要拿到session_id(),并在后续接口一起传给接口,接口再去指定session_id。

    //$_REQUEST['org_sessid']='06q75330o31se1cf4d7vl1bdm4';

    if(!empty($_REQUEST['org_sessid'])){

    $org_session_id=$_REQUEST['org_sessid'];

    session_id($org_session_id);

    session_start();

    //echo session_id();

    //echo "

    ";print_r($_SESSION);exit;

    }

    require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); //无需模板页面

    $APPLICATION->IncludeComponent("vdg:mobile.data", "", Array());

    exit;

    ?>

    2. 其次,在引入的组件的component.php中获取参数,确定模板的使用<?php

    ...

    include_once(dirname(__FILE__) . "/functions.php");//引入类的方法的文件

    ...

    if ($_REQUEST["mobile_action"])//Executing some action

    {

    $APPLICATION->RestartBuffer();

    $action = $_REQUEST["mobile_action"];

    //CRestUtil::sendHeaders(); //跨域header

    $actionList = new Bitrix\Mobile\Action();

    $actionList->executeAction($action, $arParams);

    CMain::FinalActions();

    die();

    }

    elseif ($_REQUEST["captcha_sid"])//getting captcha image 通过 /vdg/app_api.php?captcha_sid=1 可以得到图形验证码。

    {

    $APPLICATION->RestartBuffer();

    $actionList = new Bitrix\Mobile\Action();

    $actionList->executeAction("get_captcha", $arParams);

    die();

    }

    elseif ($_REQUEST["manifest_id"])//getting content of appcache manifest

    {

    include($_SERVER["DOCUMENT_ROOT"] .\Bitrix\Main\Data\AppCacheManifest::MANIFEST_CHECK_FILE);

    die();

    }

    elseif(!$USER->IsAuthorized() || !$isSessidValid)

    {

    $APPLICATION->RestartBuffer();

    header("HTTP/1.0 401 Not Authorized");

    if(Bitrix\MobileApp\Mobile::getInstance()->getInstance() != "android")

    {

    //header("Content-Type: application/x-javascript");

    header("Content-Type: application/json");

    header("BX-Authorize: ".bitrix_sessid());

    }

    jsonError('201', '请先登陆');

    //echo json_encode(Array("status" => "failed", "bitrix_sessid"=>bitrix_sessid()));

    die();

    }

    ?>

    3.在具体的模板中运用类的方法根据参数获取相应的数据,并返回客户端结果

    如果成果返回“ jsonSuccess(questions);”如果失败返回“jsonError(′201′,questions);”

    如果失败返回“jsonError(′201′,questRes[“ERROR”]);”或其他错误讯息。

    展开全文
  • vue写后端接口

    2021-04-26 20:03:12
    1.分别执行以下代码 npm init -y npm i express npm i nodemon 在pageage.json中吧scripts中的 text改成 “dev”: “nodemon index.js” 这样就可以热启动了 2. //引入 express const express = require("express");...

    1.分别执行以下代码 npm init -y npm i express npm i nodemon
    在pageage.json中吧scripts中的 text改成 “dev”: “nodemon index.js” 这样就可以热启动了
    2.

    //引入 express
    const express = require("express");
    const app = express();
    //news.json的路径
    const news = require("./json/news.json")
    
    //这里如果不输出news的话页面上不会渲染json数据
    console.log(news)
    app.get("/",(req,res)=>{
        res.send("访问/news")
    })
    app.get("/news",(req,res)=>{
        res.json(news)
    })
    //创建端口号
    app.listen(1111,()=>{
        console.log("sssss")
    })
    

    简单的json数据

    {
        "reason": "success",
        "result": {
            "stat": "1",
            "data": [
                {
                    "uniquekey": "db61b977d9fabd0429c6d0c671aeb30e",
                    "title": "关爱程序员",
                    "date": "2021-03-08 13:47:00",
                    "category": "头条",
                    "author_name": "鲁网"
                }
            
            ],
            "page": "1",
            "pageSize": "3"
        },
        "error_code": 0
    }
    

    启动可以以 node index.js 启动也可以npm run dev 第一种每次更新需要重新启动 而第二种是属于实时更新的

    在这里插入图片描述
    这是我自己创建的json当然你们可以去专门的网站去弄数据
    这里我自己有个很不错的网站
    聚合数据

    展开全文
  • 今天小编就为大家分享一篇Vue调用后端java接口的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 后端纯api的接口规范。以及一些代码习惯,包括@valid校验、后端接口异常处理、pagehelper整合、mybatis整合。
  • java抽奖后端接口

    2020-05-15 11:40:21
    源码1:数据库文件.sql 2:奖品列表展示接口 3:中奖记录接口 4:抽奖算法接口 这是一个java做的抽奖系统(固定中奖概率和变化的概率俩种模式,设定有抽奖次数,预留有关键字(这个比较敏感大家懂的),可以在多种...
  • 如何编写后端接口

    万次阅读 多人点赞 2019-12-05 15:47:37
    如何编写后端接口 一、接口的设计与规划 好的程序,一定有一套合理的后端接口。在设计后端接口的时候,要考虑清楚各个方面的需求,最好能有一个操作流程作为指导。 二、使用eclipse创建一个能够连接数据库的...

    如何编写后端接口

    一、接口的设计与规划

    好的程序,一定有一套合理的后端接口。在设计后端接口的时候,要考虑清楚各个方面的需求,最好能有一个操作流程作为指导。

    二、使用eclipse创建一个能够连接数据库的spring boot项目

    插件安装
    Help
    Eclipse Marketplace...
    Spring Tool Suite STS for Eclipse
    安装
    完成
    file
    new
    spring starter project
    填写名称
    选则依赖
    MySQL Driver
    Spring Data JPA
    Spring Web
    完成

    打开eclipse,若没有插件,则安装。file->new->spring starter project->填写名称等基本信息->选则依赖(MySQL Driver,Spring Data Jpa,Spring Web)->完成
    等程序运行完成(看右下角),就创建好了!
    若是pom.xml文件第一行报错:Unknown,则将Spring Boot Version改小,可以改成2.1.4.RELEASE。

    三、编写数据库连接,日志输出

    将resource文件夹下的application.properties改成application.yml,并加入logback-spring.xml文件。
    application.yml

    server:
      port: 8080
    spring:
      http:
        encoding:
          charset: utf8
          enabled: true
          force: true
      jmx:
        enabled: false
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/zuoshi?serverTimezone=GMT%2B8&characterEncoding=UTF-8
        username: 
        password: 
      jpa:
        database: MYSQL
        properties:
          hibernate:
            dialect: org.hibernate.dialect.MySQL5InnoDBDialect 
            hbm2ddl: 
              auto: update
        hibernate:
          ddl-auto: update
        show-sql: true
    ##配置日志
    logging:
        # 日志配置文件
        config: classpath:logback-spring.xml
        # 日志path路径配置
        path: ..\poem\logger
    

    logback-spring.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!-- 配置日志按天生成文件 S -->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <Prudent>true</Prudent>
            <rollingPolicy  class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <FileNamePattern>${LOG_PATH}/info-%d{yyyy-MM-dd}.log </FileNamePattern>
                <MaxHistory>60</MaxHistory>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <Pattern> %d{yyyy-MM-dd HH:mm:ss} -%msg%n </Pattern>
            </layout>
        </appender>
        <!-- 配置日志按天生成文件 E -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%date %-5level [%thread] %logger{100}[%line] - %msg%n</pattern>
            </encoder>
        </appender>
        <logger name="com.gome" level="INFO"/>
        <logger name="org.apache" level="WARN"/>
        <logger name="com.alibaba" level="INFO"/>
        <logger name="com.alibaba.dubbo" level="INFO"/>
        <logger name="org.springframework.web" level="INFO"/>
        <logger name="org.springframework.test" level="INFO"/>
        <logger name="org.springframework.boot" level="INFO"/>
        <logger name="org.springframework" level="INFO"/>
        <logger name="jdbc" level="WARN"/>
        <logger name="jdbc.sqltiming" level="DEBUG"/>
        <logger name="org.mybatis" level="WARN"/>
        <logger name="org.spring.jdbc" level="WARN"/>
        <!--
         其中appender的配置表示打印到控制台(稍后详细讲解appender );
         <root level="INFO">将root的打印级别设置为“INFO”,指定了名字为“STDOUT”的appender。
        -->
        <root level="INFO">
            <appender-ref ref="FILE"/>
            <appender-ref ref="STDOUT"/>
        </root>
    </configuration>

    四、编写entity(关联数据库的类)

    每个entity对应数据库里的一张表,注意在类头上添加注解:@Entity,@Table(name=“entity”),每个属性对应一个字段,主键上添加注解:@Id,@GeneratedValue(strategy = GenerationType.IDENTITY),文本类型属性添加注解:@Column(name = “user_pwd”, nullable = false, length = 20),boolean类型属性,添加注解:@Column(name = “is_delete”, nullable = false),时间类型属性添加注解:@Column(name = “create_time”,nullable = false)@Temporal(TemporalType.TIMESTAMP)。

    五、编写repository(数据库查询接口)

    repository是一个很好用的,查询数据库的接口。注意在类头上写上注解:@Repository,@Transactional。只要按照命名规范去写,这个接口就不需要实现,可以直接调用。有三个函数特别管用(注意该类的继承关系):

    @Repository
    @Transactional
    public interface ArticleRepository extends JpaRepository<Article, Integer>{
     Optional<Article> findById(Integer id);//按照主键查找
     void deleteById(Integer id);//按照主键删除
     @SuppressWarnings("unchecked")
     Article saveAndFlush(Article article);//保存并更新
    }

    六、编写service(服务层的接口)

    服务层直接和数据层交互,可以把一些元操作变成接口,以便控制层调用。

    七、编写serviceimpl(服务层接口的实现)

    注意类头上的注解:@Service,既然是接口的实现,那么,需要implements接口,然后将接口里的函数引入。声明一个repository的实例,并且加上注解:@Autowired,加上如下的代码:

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.query.Query;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    public Session getSession() {
      Configuration cfg = new Configuration();
      cfg.configure("/hibernate.cfg.xml");
      StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
      builder.applySettings(cfg.getProperties());
      SessionFactory factory = cfg.buildSessionFactory(builder.build());
      return factory.openSession();
     }

    接下来使用hql语法进行数据库的操作:

    Session session = getSession();
    String hql = "select count(*) from Article where titleId = :index";
    Query query = session.createQuery(hql).setParameter("index", bookId);
    Integer count = (Integer) query.uniqueResult();
       
    String hqltwo = "update Article set chapterId = chapterId + 1 where chapterId >= :first and chapterId < last and titleId = :bookId";
    session.createQuery(hqltwo).setParameter("first", chapterId).setParameter("last", count).setParameter("bookId", bookId);

    八、编写controller(暴露给用户使用的接口,实际是一个类)

    类头上写上注解和接口路径:@RestController,@RequestMapping("/rest/article"),每个方法上方,写上接口路径注解和返回JSON格式的注解:@RequestMapping("/throughArticle"),
    @ResponseBody,注意创建一个serviceimpl的实例,加上@Autowired注解;

    九、关于异常捕获

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @ControllerAdvice
    @ResponseBody
    public class myException {
     //1登录失败2读取失败3创建失败4修改失败5加载失败6加入失败7删除失败8返回失败9请重新登录
     private String NullPointerExceptionStr="空指针异常";
        private String ArrayIndexOutOfBoundsStr="数组越界异常";
        private String ClassCastExceptionStr="类型转换异常";
        private int ERROR_CODE = 400;
        
        static Logger logger = LoggerFactory.getLogger(myException.class);
        //空指针异常
        @ExceptionHandler(NullPointerException.class)
        public ReturnData nullPointerExceptionHandler(NullPointerException ex) {
            return resultFormat(ERROR_CODE, new Exception(NullPointerExceptionStr));
        }
        //类型转换异常
        @ExceptionHandler(ClassCastException.class)
        public ReturnData classCastExceptionHandler(ClassCastException ex) {
            return resultFormat(ERROR_CODE,  new Exception(ClassCastExceptionStr));
        }
        //数组越界异常
        @ExceptionHandler(ArrayIndexOutOfBoundsException.class)
        public ReturnData ArrayIndexOutOfBoundsException(ArrayIndexOutOfBoundsException ex) {
            return resultFormat(ERROR_CODE, new Exception(ArrayIndexOutOfBoundsStr));
        }
        //其他错误
        @ExceptionHandler({Exception.class})
        public ReturnData exception(Exception ex) {
         ex.printStackTrace();
         logger.info(ex.getMessage());
            return resultFormat(ERROR_CODE, new Exception(ResponseCode.SYSTEMBUSY.getMsg()));
        }
        //自定义错误
        public static ReturnData toException(Integer code, String msg) {
         logger.info(msg);
         return ReturnData.build(code, msg);
        }
        private <T extends Throwable> ReturnData resultFormat(Integer code, T ex) {
            ex.printStackTrace();
            return ReturnData.build(code, ex.getMessage());
        }
    }

    其中,ReturnData 是自定义的数据存储输出类。

    十、关于跨域的问题

    新增加config路径,写过滤器:

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    
    public class MyInterceptor extends HandlerInterceptorAdapter{
        static Logger logger = LoggerFactory.getLogger(MyInterceptor.class);
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {         
      response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));        
      response.setHeader("Access-Control-Allow-Methods", "*");        
      response.setHeader("Access-Control-Allow-Credentials", "true");
      response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization,Content-Type");
      response.setHeader("Access-Control-Max-Age", "3600");
      System.err.println("------------------>:已完成跨域处理");  
      logger.info("已完成跨域处理!");
      return true;    
      }
    }
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration
    public class MyWebConfigurer implements WebMvcConfigurer{
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
      registry.addInterceptor(new MyInterceptor())
      .addPathPatterns("/**");
     }
     @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**");
        }
    }

    在controller类头上加上跨域注解:@CrossOrigin。

    十一、数据的传递

    自定义的数据传递类,需要包含三个部分:
    一、执行结果状态;
    二、执行结果状态描述;
    三、执行结果(Object类型);

    十二、服务器上tomcat的设置

    1、如何使用域名访问网站?
    (1)config->server.xml更改:把8080端口改成80;
    (2)修改

    <Engine name="Catalina" defaultHost="localhost">
    

    <Engine name="Catalina" defaultHost="www.test.com">
    

    (3)找到host标签,修改为:

    <Host name="www.test.com"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="xxxx"/><!--xxxx就是在webapps下面xxxx.war的名字-->
        <Alias>test.com</Alias><!--如果没带www域名也配置好映射了就加上这个-->
    

    (4)重启tomcat服务;
    2、一个tomcat部署多个项目
    (1)tomcat路径下,新建一个文件夹,以区别于webapps文件夹,用于存放第二个项目;
    (2)server.xml里,加入一个新的Service(可以拷贝后修改参数);
    (3)注意:两个项目不能使用同一个端口,项目存放的文件夹需要修改;

    十三、利用tomcat部署程序到服务器上

    spring boot项目打包成war包:
    (1)pom.xml里边配置:

    <packaging>war</packaging>;
    

    (2)pom.xml里边,撤销嵌入的tomcat:在web的dependency下边:

    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
    

    (3)添加servlet依赖:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    

    (4)添加SpringBootApplication启动类:

    /**
     * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
     */
    public class SpringBootStartApplication extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            // 注意这里要指向原先用main方法执行的Application启动类
            return builder.sources(Application.class);
        }
    }

    (5)右键工程:Run as->Maven build…->Goals里边填上:clean package->确定;
    (6)在target文件夹下能找到打包好的war包;

    十四、运行程序

    去掉war包的后缀(工程名.war),放到部署好的文件夹下边(一般为webapps),启动tomcat就好了。

    十五、几个eclipse的使用技巧

    1、自动提示的设置

    Window
    Preferences
    Java
    Editor
    Content Assist
    勾上Enable auto activation
    第二个加上26个字母
    完成

    26个字母不用区分大小写。
    2、自动注释的设置

    Window
    Preferences
    Java
    Code Style
    Code Templates
    完成

    通过Alt+Shift+J自动添加注释。
    3、@GeneratedValue注解
    strategy属性提供四种值:
    AUTO主键由程序控制, 是默认选项 ,不设置就是这个;
    IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式;
    SEQUENCE 通过数据库的序列产生主键, MYSQL 不支持;
    Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植。
    4、打开数据库的几种方式
    ddl-auto:create:每次运行该程序,没有表格会新建表格,表内有数据会清空
    ddl-auto:create-drop:每次程序结束的时候会清空表
    ddl-auto:update:每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
    ddl-auto:validate:运行程序会校验数据与数据库的字段类型是否相同,不同会报错
    5、@Controller与@RestController
    Controller可以返回网页,RestController返回的是数据。
    6、网页接口与后端接口的区别
    网页接口需要使用thymleaf模板,引入如下依赖:

    <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    

    后端接口则直接使用POSTMAN访问测试。
    7、@ResponseBody
    让结果类按照JSON字符串的形式返回。

    十六、eclipse常见问题

    1、系统找不到menifest.mf:找到xmlns中间的空格,先回车,再复原,就好了。
    2、eclipse自动生成get和set:右键->source->Generate Getters and Setters…
    3、org.springframework包报错:
    pom.xml里边加入:

      <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-test</artifactId>
       <version>4.3.2.RELEASE</version>
      </dependency>
    

    4、Archive for required library: “xxxx” in project ‘*’ cannot be read or is not a valid ZIP file:删除路径下的整个文件夹,然后项目右键->Run as->Maven Install,最后update项目。
    5、spring boot数据库:关键字,如user,limit,delete等,不能作为表名,字段名或者出现在需要自定义的地方;

    展开全文
  • 后端接口

    千次阅读 2019-07-08 19:17:20
    ejs模板语法 <% '脚本' 标签,用于流程控制,无输出。...什么是流程控制? 条件判断 if 循环控制 for forEach … while do…while 后端渲染 后端通过一个模板( 兼容html ) + 后端模板语法 ----》...
  • 分页 vue 接口
  • 后端返回给前端我们一般JSON体方式,定义如下: { #返回状态码 code:integer, #返回信息描述 message: string, #返回值 data: object } CODE状态码 code返回状态码,一般小伙伴们是在开发的时候需要什么,就添加...
  • 如何设计和编写标准的后端接口

    千次阅读 2020-10-11 13:18:59
    如何设计和编写标准的后端接口
  • 使用一般参数传递方式,实现简单计算器的加减乘除后端接口功能。 Http://localhost:8080/simplecalculator
  • Java后端开发工作 - 写接口

    千次阅读 多人点赞 2020-04-15 16:52:22
    我在公司的工作内容是,对于一个BS应用,负责服务器端开发工作,Java语言。与前端开发人员合作,最终提供给前端RESTFUL接口,保证页面正常响应。 经验之谈 一个接口可以理解为一个业务逻辑,一个业务...后端提供给...
  • 一面 1 自我介绍和项目 2 Java的内存分区 3 Java对象的回收方式,回收算法。 4 CMS和G1了解么,CMS解决什么问题,说一下回收的过程。 ...9 它们的使用方式和实现原理有什么区别呢? 10 synchroniz.
  • 例1 update更新接口:参数有两个 ...前端调用updateUser请求后端接口的方法: 更新功能的提交按钮: 请求后端接口: 例2:getList请求接口 前端调用getList请求后端接口的方法: 请求后端接口
  • SpringBoot连接MySQL获取数据写后端接口 文章目录SpringBoot连接MySQL获取数据写后端接口1.新建项目2.添加依赖3.spring容器中创建DriverManagerDataSource和JdbcTemplate对象3.1在springboot中加载spring容器的方法1...
  • 1、HTTP携带信息的方式urlheadersbody:包括请求体,响应体2、分离通用信息一般来说,headers里的信息都是通用的,可以提前说明,作为默认参数3、路径中的参数表达式URL中参数表达式使用mustache的形式,参数包裹在...
  • vue 使用后端接口

    2021-07-15 19:17:17
    目录解析hu黄 黄!...=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYxNTI4OQ==,size_16,...api中是放接口的地方(后端接口) views中是放组件的(这里用到了后
  • 如何出优雅的后端API接口

    千次阅读 2021-03-11 10:30:33
    目录前言接口交互返回格式控制层Controller美观优化优雅优化实现方案总结前言在移动互联网,分布式、微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职责越来越明确...
  • SpringBoot写后端接口,看这一篇就够了!

    万次阅读 多人点赞 2020-09-15 14:22:52
    如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范! 本文就一步一步演示如何构建起一个...
  • (1)先写后端接口( node + express ) npm init npm install npm install express --save app.js文件 const express = require('express') const app = express() //设置跨域访问 app.all('*', function...
  • 如何优雅地写后端API接口

    万次阅读 多人点赞 2020-12-23 15:14:42
    1.接口交互 前端和后端进行交互,前端按照约定请求URL路径,并传入相关参数,后端服务器接收请求,进行业务处理,返回数据给前端。 针对URL路径的restful风格,以及传入参数的公共请求头的要求(如:app_version,...
  • Postman 测试后端接口

    千次阅读 2020-04-29 22:11:36
    Postman 测试后端接口一. 测试后端 get请求 接口 后台的接口 “经常” 出错, 如果你接口时出 bug 了, 是你的原因? 还是后台的原因? Postman 软件, 让你不需要一行代码直接向后台发请求 . 此时出 bug , 直接 ...
  • 由于是转发也不再复制粘贴了,贴地址看吧: https://segmentfault.com/a/1190000038639204 或、 https://mp.weixin.qq.com/s/ipFW88zeRRQZE1BydJE9gw
  • 点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]前言一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应...
  • 过了两个微信的页面,遇到了挺多不会的问题,当时也是自己边查资料,边实践完成了简单的需求,刚好现在有空,把之前的东西整理一遍。...后端返回接口 在前端调用时wx.config({…})中需要的参数需要我们
  • Node后端目录结构 sql/index.js // 封装好的数据库的基本操作 增 删 改 查 const sql = { // 插入操纵 insert (ColName, insertData) {//所需参数为:ColName:数据库中所需添加的集合名称以及规则,insertData:添加...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 184,048
精华内容 73,619
关键字:

后端接口用什么写