首页 > 其他分享 >Api-前后端串连

Api-前后端串连

时间:2024-10-09 17:49:44浏览次数:8  
标签:Flask 串连 前后 flask Api error import data app

端口号识别

前端和后端项目目前都在本地运行,但是端口号不同
前端:http://localhost:5173/
后端:http://localhost:5000/
不同端口号视为不在同一个域之下。

解决跨域的方法

  1. 使用Flask的CORS:
    • 您可以在后端(例如使用 Flask)应用 CORS(跨域资源共享)中间件,以允许来自不同源的请求。
    • 例如,如果您使用 Flask,可以通过安装 flask-cors 库来解决:pip install flask-cors。然后,在Flask应用中添加代码:
from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)  # 允许所有来源的请求

@app.route('/api/data', methods=['GET'])
def get_data():
    return jsonify({'message': 'Hello, World!'})

  1. 设置代理(开发时):
    • 如果您使用工具如 Vue CLI 或 Create React App,可以在开发服务器配置中设置代理,将请求代理到后端。
    • 我在Vite中添加代理,以解决跨域问题。可以在 vite.config.js 文件中添加 server.proxy 配置:
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:5000', // 后端地址
        changeOrigin: true,
      }
    }
  }
})

在前端项目中添加API

import axios from "axios";

const fetchMatchJSONData = async (stationValue) => {
    try {
        const matchResponse = await axios.get(
            `/api/match_data/${stationValue}/merged_matched_points.json` // 使用代理配置的路径
        );
        const matchJSON = matchResponse.data;
        return matchJSON;
    }
    catch (error) {
        // 判断是否为 404 错误
        if (error.response && error.response.status === 404) {
            // 弹出提示框
            alert('匹配数据文件不存在!');
        } else {
            console.error('请求失败:', error);
        }
        throw error; // 可以根据需要抛出错误,或者做其他错误处理
    }
};
export {fetchMatchJSONData};

在Flask后端中处理请求

import flask
from flask import Flask, request, jsonify
import json
import os
from flask import send_from_directory

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World'

@app.route('/api/match_data/<station_value>/merged_matched_points.json', methods=['GET'])
def get_match_data(station_value):
    data_directory = 'MultiMerge/dataset/match_data'

    # 构建匹配文件的路径
    file_path = os.path.join(data_directory, f'{station_value}/merged_matched_points.json')

    # 检查文件是否存在
    if os.path.exists(file_path):
        return send_from_directory(data_directory, f'{station_value}/merged_matched_points.json')
    else:
        return jsonify({'error': '文件不存在'}), 404

标签:Flask,串连,前后,flask,Api,error,import,data,app
From: https://www.cnblogs.com/Frey-Li/p/18454792

相关文章

  • TFLearn: 高级API深度学习库
    TFLearn简介TFLearn是一个建立在TensorFlow之上的深度学习库,旨在为TensorFlow提供一个更高级的API,以便于快速实验和开发。它的设计理念是提供一个模块化、透明的深度学习库,同时保持与TensorFlow的完全兼容性。TFLearn具有以下主要特点:简单易用的高级API,可以快速实现深度神......
  • Capital许可证类型全解析
    在数字化时代,软件已成为企业运营不可或缺的重要工具。为确保合规、高效地使用这些软件,了解并选择适合企业需求的许可证类型至关重要。Capital作为专业的软件许可管理解决方案提供商,致力于帮助企业全面了解各种许可证类型,从而做出明智的选择。一、Capital许可证类型概览Capital提......
  • 计算机毕业设计 基于Python的智能停车系统的设计与实现 Python+Django+Vue 前后端分离
    ......
  • 计算机毕业设计 基于Django的在线考试系统的设计与实现 Python+Django+Vue 前后端分离
    ......
  • webapi发布---问题解决
    一.127.0.0.1是回路地址,来检验本机TCP/IP协议栈,实际使用过程中服务端不在本机,是外部地址,要用IP地址测试。外部用户采用IP+端口号访问,如下图浏览器访问不了,400错误。解决方案:因为IIS7采用了更安全的web.config管理机制,默认情况下会锁住配置项不允许更改。以管理员身份运......
  • webapi测试例子
     1.修改WebApiConfig.cs中路由路径  问题:webapi的默认路由并不需要指定action的名称(WebApi的默认路由是通过http的方法get/post/put/delete去匹配对应的action),        但默认路由模板无法满足针对一种资源一种请求方式的多种操作。  解决:打开App_Sta......
  • 打通前后端流程,案例解读华为云开源低代码引擎解决方案
    本文分享自华为云社区《使用场景级前端解决方案及低代码引擎,助力开发者生产效能提升》,来源:《华为云DTSE》第五期开源专刊当前前端在场景级的前端能力/物料上,业界相关内容/产品较少,并且较分散,基本无基础组件搭配,体验参差,多数专业场景能力/物料仅商用授权;对于场景的构建,开发效率与......
  • 使用宝塔快速搭建配置Openai api接口代理+502 Bad Gateway网关错误问题解决
    本教程提供了一种简便快捷的方法,无需复杂步骤,极易操作,实现零代码、零部署的快速接入。实现准备1.服务器,这里使用阿里香港轻量服务器)2.OpenAI官方的模型apikey3.使用第三方系统或插件进行测试关于第三方网站系统或插件:《SparkAI系统介绍文档-渐进式AIGC系统》开......
  • 调用sdapi/v1/txt2img接口,报错“Couldn‘t load custom C++ ops”
    后端启动stable_diffusion的api接口nohuppythonlaunch.py --use-cpuall--skip-torch-cuda-test   --api--api-log  --listen--server-name192.168.1.204>/home/third_party_app/llm/stable-diffusion-webui/logs/all.log2>&1 &服务接口http://192.168......
  • apisix Admin API配置TCP路由转发
    apisixAdminAPI配置TCP路由转发 一、开启和配置stream代理1、修改/usr/local/apisix/conf/config.yaml文件新增以下配置apisix:proxy_mode:http&streamstream_proxy:tcp:-9100-"192.168.1.110:9101"udp:-9200......