diff --git a/redfish-core/lib/certificate_service.hpp b/redfish-core/lib/certificate_service.hpp
index 16f26e3..93cb366 100644
--- a/redfish-core/lib/certificate_service.hpp
+++ b/redfish-core/lib/certificate_service.hpp
@@ -148,7 +148,7 @@
  * @return None
  */
 static void updateCertIssuerOrSubject(nlohmann::json& out,
-                                      const std::string_view value)
+                                      std::string_view value)
 {
     // example: O=openbmc-project.xyz,CN=localhost
     std::string_view::iterator i = value.begin();
@@ -163,16 +163,14 @@
         {
             break;
         }
-        const std::string_view key(tokenBegin,
-                                   static_cast<size_t>(i - tokenBegin));
+        std::string_view key(tokenBegin, static_cast<size_t>(i - tokenBegin));
         ++i;
         tokenBegin = i;
         while (i != value.end() && *i != ',')
         {
             ++i;
         }
-        const std::string_view val(tokenBegin,
-                                   static_cast<size_t>(i - tokenBegin));
+        std::string_view val(tokenBegin, static_cast<size_t>(i - tokenBegin));
         if (key == "L")
         {
             out["City"] = val;
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index bb9552a..ee57557 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -91,7 +91,7 @@
     return nullptr;
 }
 
-static const Message* getMessage(const std::string_view& messageID)
+static const Message* getMessage(std::string_view messageID)
 {
     // Redfish MessageIds are in the form
     // RegistryName.MajorVersion.MinorVersion.MessageKey, so parse it to find
@@ -157,7 +157,7 @@
 }
 
 inline static int getJournalMetadata(sd_journal* journal,
-                                     const std::string_view& field,
+                                     std::string_view field,
                                      std::string_view& contents)
 {
     const char* data = nullptr;
@@ -179,8 +179,8 @@
 }
 
 inline static int getJournalMetadata(sd_journal* journal,
-                                     const std::string_view& field,
-                                     const int& base, long int& contents)
+                                     std::string_view field, const int& base,
+                                     long int& contents)
 {
     int ret = 0;
     std::string_view metadata;
@@ -3321,8 +3321,7 @@
     invalid,
 };
 
-inline OEMDiagnosticType
-    getOEMDiagnosticType(const std::string_view& oemDiagStr)
+inline OEMDiagnosticType getOEMDiagnosticType(std::string_view oemDiagStr)
 {
     if (oemDiagStr == "OnDemand")
     {
diff --git a/redfish-core/lib/redfish_v1.hpp b/redfish-core/lib/redfish_v1.hpp
index b4349ab..4cae985 100644
--- a/redfish-core/lib/redfish_v1.hpp
+++ b/redfish-core/lib/redfish_v1.hpp
@@ -83,7 +83,7 @@
     json["Name"] = "JsonSchemaFile Collection";
     json["Description"] = "Collection of JsonSchemaFiles";
     nlohmann::json::array_t members;
-    for (const std::string_view schema : schemas)
+    for (std::string_view schema : schemas)
     {
         nlohmann::json::object_t member;
         member["@odata.id"] = crow::utility::urlFromPieces(
diff --git a/redfish-core/lib/task.hpp b/redfish-core/lib/task.hpp
index 563f06f..95fa0c0 100644
--- a/redfish-core/lib/task.hpp
+++ b/redfish-core/lib/task.hpp
@@ -196,7 +196,7 @@
         });
     }
 
-    static void sendTaskEvent(const std::string_view state, size_t index)
+    static void sendTaskEvent(std::string_view state, size_t index)
     {
         std::string origin =
             "/redfish/v1/TaskService/Tasks/" + std::to_string(index);
